2013-01-21 216 views
2

我在c#中使用FTP服務器,我必須上傳不同typer(.png,.xlsx,docx ....)的文件,上傳是爲每種文件類型完成的,但是如果我嘗試打開一個文件(除了.txt),說明文件已損壞。 我做錯了什麼?Ftp上傳的文件被損壞,除非「txt」文件c#

謝謝

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; 
    } 

回答

6

你爲什麼用Encoding.UTF8.GetBytes

該修剪字節。

您應該以二進制模式讀取數據(即File.ReadAllBytes)。

0

檢查是否使用ASCII或二進制傳輸模式。