Ich verwende den Code unten eine Zip-Datei, um zu meinem FTP-Server zu:C#: ftp-Upload ist erfolgreich, aber dowloaded Datei beschädigt ist
string zipPath = @"d:\files\start.zip";
string ftpPath = ("ftp://######/start.zip");
WebRequest request = WebRequest.Create(ftpPath);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("######", "######");
StreamReader sourceStream = new StreamReader(zipPath);
byte[] fileContents = Encoding.Unicode.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
try
{
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse makeFileUploadResponse = (FtpWebResponse)request.GetResponse();
}
catch
{
MessageBox.Show("ftp failed!");
}
Mein Zip-Archiv ist auf jeden Fall gültig ist (ich kann es öffnen und extrahieren Sie es), aber wenn ich die hochgeladene Zip-Datei herunterladen, habe ich den Fehler, dass das Archiv beschädigt ist.
Update 1: mein Quellcode von MSDN-Artikel ist: How to: Upload Files with FTP
Warum würden Sie 'Unicode.GetBytes()' auf Binärinhalt benötigen? Hast du 'byte [] fileContents = File.ReadAllBytes (zipPath)' stattdessen versucht? –
Es basiert nur auf dem MSDN Artikel, den ich erwähnte. – wiki
Ja, aber sie haben eine Textdatei hochgeladen, wo die UTF8-Kodierung eigentlich Sinn macht (hätte aber trotzdem funktionieren sollen, wenn sie Byte für Byte übertragen wurde). Für Binärdateien wie eine '.zip' Datei scheint es keinen Sinn zu ergeben. –