【发布时间】:2015-12-04 07:29:59
【问题描述】:
我在使用流将多个文件一一上传到 ftp 时遇到问题。 当我在写入流后尝试关闭流(ftpstream.close())时,上传的文件被删除。 如果我不使用 .close(),则很少有文件被上传,但是对于 getstreamrequest() 的第三次调用(每次文件上传都会调用)给出“此操作超时错误”
using (Stream stream = new MemoryStream(File.ReadAllBytes(fullPath)))
{
stream.Position = 0;
stream.Seek(0, SeekOrigin.Begin);
string uri = String.Format("{0}/{1}", _FTPURL, fileName);
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
request.Credentials = new NetworkCredential(_FTPUSRNAME, _FTPPSWD);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.KeepAlive = false;
request.UseBinary = true;
request.UsePassive = true;
request.ContentLength = stream.Length;
request.EnableSsl = false;
int bufferLength = 2048*20;
byte[] buffer = new byte[bufferLength];
int contentLength;
ftpStream = request.GetRequestStream();
contentLength = stream.Read(buffer, 0, bufferLength);
while (contentLength != 0)
{
ftpStream.Write(buffer, 0, contentLength);
contentLength = stream.Read(buffer, 0, bufferLength);
}
}
pageNo++;
}
}
ftpStream.Close();
}
while (!hasPaginationCompleted);
【问题讨论】:
-
帖子(
stream(ftpstream.close()))中显示的代码很奇怪。请提供minimal reproducible example,以便有人可以建议您的代码有什么问题。 (您帖子的后半部分是设计使然,因为同时打开的连接有默认限制)。 -
也许this link 可能会有所帮助