Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net C#FtpWebRequest上传文件,网络中断时自动保存_.net_File Upload_Large Files_Ftpwebrequest - Fatal编程技术网

.net C#FtpWebRequest上传文件,网络中断时自动保存

.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

当我使用“.Net FtpWebRequest”编写上传大文件(1-2GB)的工具时。 这是我代码的一部分:

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()如何?