我正在尝试使用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传输。
答案 0 :(得分:0)
我使用可以使用cmd访问的内置Windows FTP解决了我的问题。
flex-direction:column