2013-01-21 6 views
2

J'utilise un serveur FTP en C# et je dois télécharger des fichiers de type différent (.png, .xlsx, docx ....), au moment où le le téléchargement est fait pour chaque type de fichier, mais si j'essaie d'ouvrir un fichier (sauf pour .txt), il est dit que le fichier est corrompu. qu'est-ce que je fais mal?Les fichiers téléchargés Ftp sont corrompus à moins que les fichiers "txt" C#

merci

FtpWebResponse response = null; 
    try 
    { 
     FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); 
     if (request == null) 
     { 
      result.SetError(Translate.InvalidUrl, url); 
      return false; 
     } 
     request.Method = WebRequestMethods.Ftp.UploadFile; 
     request.UseBinary = true; 

     request.Credentials = new NetworkCredential(username, password); 

     if (sourceStream == null) 
     { 
      result.SetError(Translate.FileErrorReading); 
      return false; 
     } 
     byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
     sourceStream.Close(); 

     request.ContentLength = fileContents.Length; 

     Stream requestStream = request.GetRequestStream(); 
     requestStream.Write(fileContents, 0, fileContents.Length); 
     requestStream.Close(); 

     response = (FtpWebResponse)request.GetResponse(); 

     result.SetInformation(Translate.FileSuccefullUpload, filename); 

    } 
    catch (Exception e) 
    { 
     result.SetError(e.Message); 
     return false; 
    } 
    finally 
    { 
     if (response != null) 
      response.Close(); 
    } 
    return result.Successful; 
    } 

Répondre

6

Pourquoi utilisez-vous Encoding.UTF8.GetBytes?

Cette taille d'octets.

Vous devez lire vos données en mode binaire (c'est-à-dire File.ReadAllBytes).

0

Vérifiez si vous utilisez le mode de transfert ASCII ou BINARY.

Questions connexes