Stream使用C#仅向FTP服务器上的文件写入512个字节

时间:2016-12-19 10:56:15

标签: c# ftp ftpwebrequest

我正在尝试使用C#将文件从本地计算机复制到FTP服务器。 当我使用下面的代码时,文件被完全复制到FTP服务器,但**原始行被切成只有512字节长的片段,而它们应该是1152,1126或1024字节长。 **我使用的示例文件现在有16行而不是7行。

    public void uploadLOTFILE(string username, string password)
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://mysite.mine/mypathandfilename");
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(username, password);
        request.KeepAlive = true;
        System.IO.Stream rs = request.GetRequestStream();

        var lines = File.ReadLines(@"myLocalFile.txt");
        foreach (var line in lines)
        {
            byte[] buffer = Encoding.ASCII.GetBytes(line);                
            Console.WriteLine("buffer.length:" + buffer.Length.ToString());
            rs.Write(buffer,0,buffer.Length);
        }
        rs.Close();

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

        response.Close();
      }

从Console.writeline输出示例文件:

  

buffer.length:1152

     

buffer.length:1126

     

buffer.length:1152

     

buffer.length:1152

     

buffer.length:1152

     

buffer.length:1152

     

buffer.length:1024

我还使用了msdn(https://msdn.microsoft.com/en-us/library/ms229715(v=vs.110).aspx)的精确副本,但结果相同。

修改 还尝试了以下代码:             string filePath = @“myFilePath”;             var fileName = Path.GetFileName(filePath);             var request =(FtpWebRequest)WebRequest.Create(“ftp://myftp”);

        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(username, password);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        using (var fileStream = File.OpenRead(filePath))
        {
            using (var requestStream = request.GetRequestStream())
            {
                fileStream.CopyTo(requestStream);
                requestStream.Close();
            }
        }

它给出了相同的结果。该文件已完全复制,但每512字节添加一个换行符。

使用FileZilla,我可以对相同类型的文件进行正确的FTP传输。

1 个答案:

答案 0 :(得分:0)

我使用可以使用cmd访问的内置Windows FTP解决了我的问题。

flex-direction:column