.net C#FtpWebRequest上传文件,网络中断时自动保存
当我使用“.Net FtpWebRequest”编写上传大文件(1-2GB)的工具时。 这是我代码的一部分:.net C#FtpWebRequest上传文件,网络中断时自动保存,.net,file-upload,large-files,ftpwebrequest,.net,File Upload,Large Files,Ftpwebrequest,当我使用“.Net FtpWebRequest”编写上传大文件(1-2GB)的工具时。 这是我代码的一部分: FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create(fileUri); reqFtp.Credentials = new NetworkCredential(_ftpUserName, _ftpPassWord); reqFtp.KeepAlive = false; reqFtp.Method = WebRequestMeth
FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create(fileUri);
reqFtp.Credentials = new NetworkCredential(_ftpUserName, _ftpPassWord);
reqFtp.KeepAlive = false;
reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
reqFtp.UseBinary = true;
reqFtp.ContentLength = fileInf.Length;
const int buffLength = 2048;
byte[] buff = new byte[buffLength];
FileStream fs = fileInf.OpenRead();
Stream strm = reqFtp.GetRequestStream();
double totalLength = Convert.ToDouble((fs.Length + 0.0) / 1024 / 1024);
try
{
int contentLen = fs.Read(buff, 0, buffLength);
double uploadLength = (contentLen + 0.0) / 1024 / 1024;
double percentage = 0.0;
while (contentLen != 0 && !(panel.Stop))
{
percentage = uploadLength*100/totalLength;
if (panel.ProgressBar.InvokeRequired)
{
UpdateProcessBarDelegate d = UpdateProgressBarValue;
panel.ProgressBar.Invoke(d, panel.ProgressBar, (int)percentage);
}
else
{
panel.ProgressBar.Value = (int)percentage;
}
strm.Write(buff, 0, buffLength);
contentLen = fs.Read(buff, 0, buffLength);
uploadLength += (contentLen + 0.0) / 1024 / 1024;
}
strm.Close();
fs.Close();
}
它具有暂停和继续功能。
但是当网络中断时,所有这些流都不会写入ftp服务器。
我认为它只在调用“strm.Close()时写入ftp服务器”
我如何实现当网络中断时,这个文件流将被写入ftp服务器的功能? (当我上传每10MB的数据时,也许我可以保存或关闭流)
谢谢大家! “我如何实现当网络中断时,此文件流将写入ftp服务器的功能?(当我上传每10MB数据时,也许我可以保存或关闭该流)”-strm.Flush()如何?