Upload-und download binäre Datei auf/vom FTP-server in C#/.NET

Ich bin mit .NET 4 C#. Ich bin versucht zu laden und dann laden Sie eine ZIP-Datei zu (meinem) server.

Für das hochladen ich habe

using (WebClient client = new WebClient())
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(MyUrl);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.EnableSsl = false;
    request.Credentials = new NetworkCredential(MyLogin, MyPassword);
    byte[] fileContents = null;
    using (StreamReader sourceStream = new StreamReader(LocalFilePath))
    {
        fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
    }
    request.ContentLength = fileContents.Length;
    using (Stream requestStream = request.GetRequestStream())
    {
        requestStream.Write(fileContents, 0, fileContents.Length);
    }
    FtpWebResponse response = null;
    response = (FtpWebResponse)request.GetResponse();
    response.Close();
}

Diese scheint zu funktionieren, dass ich eine Datei auf dem server, der die richtige Größe.

1) Wie kann ich streamen, anstatt in den Arbeitsspeicher zu laden zuerst? Ich werde das hochladen sehr großer Dateien.

Und für den Download habe ich

using (WebClient client = new WebClient())
{
    string HtmlResult = String.Empty;
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(remoteFile);
    request.Method = WebRequestMethods.Ftp.DownloadFile;
    request.EnableSsl = false;
    request.Credentials = new NetworkCredential(MyLogin, MyPassword);
    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
    using (Stream responseStream = response.GetResponseStream())
    using (StreamReader reader = new StreamReader(responseStream))
    using (FileStream writer = new FileStream(localFilename, FileMode.Create))
    {
        long length = response.ContentLength;
        int bufferSize = 2048;
        int readCount;
        byte[] buffer = new byte[2048];
        readCount = responseStream.Read(buffer, 0, bufferSize);
        while (readCount > 0)
        {
            writer.Write(buffer, 0, readCount);
            readCount = responseStream.Read(buffer, 0, bufferSize);
        }
    }
}

2) Alles scheint zu funktionieren ... außer wenn ich versuche zu entpacken Sie die heruntergeladene ZIP-Datei erhalte ich eine ungültige ZIP-Datei.

  • FTP BINARY - Modus?
  • Richtig! Danke, ich werde versuchen, dass. Denke auch, dass ich aussortiert stream-uploads.
  • Binary-Modus ist Standard.
  • Wenn Sie das herunterladen einer ZIP-Datei vorher laden mit Ihrem code, die Datei war beschädigt, während der upload, wie Sie behandeln die Datei als UTF-8 text-Datei, nicht als eine binäre Datei.
InformationsquelleAutor jo phul | 2017-06-17
Schreibe einen Kommentar