【问题标题】:Closing ftp stream deletes the uploaded file in c# [closed]关闭ftp流会删除c#中上传的文件[关闭]
【发布时间】: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 可能会有所帮助

标签: c# ftp stream


【解决方案1】:

我认为您的代码中的问题是您调用ftpStream = request.GetRequestStream(); 的地方以及您使用ftpStream.Close(); 关闭流的地方

很多} 介于两者之间,这意味着您在没有正确关闭它们的情况下获得了多个请求流。

您可能需要在请求的同一代码级别关闭流。

【讨论】:

  • 我的代码这种 do{ } while(!hasPaginationCompleted) ... 在放置 ftpstream.close() .... 如果我在 while (contentLength != 0) { } 之后放置给出同样的错误......无论我将.close()放在哪里,只要它执行上传的文件被删除......
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
相关资源
最近更新 更多