Я пытаюсь скопировать файл с моего локального компьютера на FTP-сервер с помощью C#. Когда я использую приведенный ниже код, файл полностью копируется на FTP-сервер, но ** исходные строки разрезаются на куски длиной всего 512 байт, тогда как они должны быть длиной 1152,1126 или 1024 байта. ** В этом примере файл я теперь 16 строк вместо 7.Поток записывает только 512 байт в файл на FTP-сервере, используя C#
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
буфера. длина: 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), но это было то же самое результат.
Edit: также попытался следующий код: строка 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 одного и того же типа файлов.
* «файл полностью скопирован на FTP-сервер, но строки имеют длину всего 512 байтов» * - Это не имеет смысла. Так файл полностью скопирован или нет? –
Как вы можете проверить, что линии имеют длину всего 512 строк? –
Что вы на самом деле пытаетесь сделать? Почему вы загружаете файл по строкам? –