2013-01-21 163 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或二进制传输模式。