2012-02-27 103 views
1

我需要將張貼的文件上載到我的控制器中的FTP文件位置。將張貼的文件上傳到FTP

這是我現在擁有的。

public ActionResult Upload(HttpPostedFileBase file) 
    {  
      string fileName = System.IO.Path.GetFileName(file.FileName); 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://10.10.0.3"+"/"+fileName); 
      request.Method = WebRequestMethods.Ftp.UploadFile; 

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

      StreamReader streamReader = new StreamReader(file.InputStream); 

      byte[] fileContents = Encoding.UTF8.GetBytes(streamReader.ReadToEnd()); 
      streamReader.Close(); 
      request.ContentLength = fileContents.Length; 

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

      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 


     ..... 

    } 

該文件正在上傳,它具有正確的頁數,但是新文件中沒有文本。 (這些是pdf,我將在稍後對類型進行驗證,只是試圖讓它現在工作)。

謝謝!

回答

2

您正在閱讀PDF文件,就像它們是文本文件一樣。相反,嘗試一下。

var sourceStream = file.InputStream; 
requestStream = request.GetRequestStream(); 
request.ContentLength = sourceStream.Length; 
byte[] buffer = new byte[BUFFER_SIZE]; 
int bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE); 
do 
{ 
    requestStream.Write(buffer, 0, bytesRead); 
    bytesRead = sourceStream.Read(buffer, 0, BUFFER_SIZE); 
} while (bytesRead > 0); 
sourceStream.Close(); 
requestStream.Close(); 
response = (FtpWebResponse)request.GetResponse(); 
+0

非常感謝!!! – twaldron 2012-02-28 20:02:17