问题:如果有加上图片显示pictureBox1.Image = Image.FromStream(fileStream);,上传的图片就全部为零字节。有什么办法解决吗?
代码如下:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;namespace myUpload
{
public partial class form1 : Form
{
public form1()
{
InitializeComponent();
} //上传
private FtpStatusCode UploadFun(string fileName)
{
Stream requestStream = null;
FileStream fileStream = null;
FtpWebResponse uploadResponse = null; //显示原文件路径
label2.Text = fileName;
label3.Text = "×";
Application.DoEvents();
label2.Refresh();
//构造目标路径
FileInfo fileInf = new FileInfo(fileName);
string uploadUrl = "ftp://192.168.4.88/tempUpload/photo/" + fileInf.Name; try
{
//连接ftp服务器
FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
uploadRequest.Proxy = null;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "dry";
nc.Password = "";
uploadRequest.Credentials = nc; //上传
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(fileName, FileMode.Open);
//显示图片
//pictureBox1.Image = Image.FromStream(fileStream); byte[] buffer = new byte[1024];
int bytesRead, i, t;
i = Convert.ToInt32(fileStream.Length);
t = i / 1024; progressBar1.Value = 0;
progressBar1.Maximum = t + 2;
while (true)
{ bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
{
progressBar1.Value = progressBar1.Maximum;
label3.Text = "√";
Application.DoEvents();
break; }
else
{
requestStream.Write(buffer, 0, bytesRead);
progressBar1.Value++; } }
requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
return uploadResponse.StatusCode; }
catch (UriFormatException ex)
{
MessageBox.Show(ex.Message);
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
catch (WebException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (uploadResponse != null)
uploadResponse.Close();
if (fileStream != null)
fileStream.Close();
if (requestStream != null)
requestStream.Close(); }
return FtpStatusCode.Undefined;
} private ParameterizedThreadStart ThreadStart()
{
throw new Exception("The method or operation is not implemented.");
} private void upLoadButton_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 100; i++)
{
UploadFun(@"D:\My Documents\My Pictures\test\" + i + "_big.jpg");
}
} }
}
代码如下:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;namespace myUpload
{
public partial class form1 : Form
{
public form1()
{
InitializeComponent();
} //上传
private FtpStatusCode UploadFun(string fileName)
{
Stream requestStream = null;
FileStream fileStream = null;
FtpWebResponse uploadResponse = null; //显示原文件路径
label2.Text = fileName;
label3.Text = "×";
Application.DoEvents();
label2.Refresh();
//构造目标路径
FileInfo fileInf = new FileInfo(fileName);
string uploadUrl = "ftp://192.168.4.88/tempUpload/photo/" + fileInf.Name; try
{
//连接ftp服务器
FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
uploadRequest.Proxy = null;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "dry";
nc.Password = "";
uploadRequest.Credentials = nc; //上传
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(fileName, FileMode.Open);
//显示图片
//pictureBox1.Image = Image.FromStream(fileStream); byte[] buffer = new byte[1024];
int bytesRead, i, t;
i = Convert.ToInt32(fileStream.Length);
t = i / 1024; progressBar1.Value = 0;
progressBar1.Maximum = t + 2;
while (true)
{ bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
{
progressBar1.Value = progressBar1.Maximum;
label3.Text = "√";
Application.DoEvents();
break; }
else
{
requestStream.Write(buffer, 0, bytesRead);
progressBar1.Value++; } }
requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
return uploadResponse.StatusCode; }
catch (UriFormatException ex)
{
MessageBox.Show(ex.Message);
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
catch (WebException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (uploadResponse != null)
uploadResponse.Close();
if (fileStream != null)
fileStream.Close();
if (requestStream != null)
requestStream.Close(); }
return FtpStatusCode.Undefined;
} private ParameterizedThreadStart ThreadStart()
{
throw new Exception("The method or operation is not implemented.");
} private void upLoadButton_Click(object sender, EventArgs e)
{
for (int i = 1; i <= 100; i++)
{
UploadFun(@"D:\My Documents\My Pictures\test\" + i + "_big.jpg");
}
} }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货