2016-09-19 120 views
0

我有這段代碼來上傳一個RAR文件到服務器,這個工程。但是當我從服務器上下載文件時,文件的內容被破壞了。請告訴我如何解決這個問題。謝謝。ASP MVC - 用FTP上傳RAR文件

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

     request.Credentials = new NetworkCredential("myUserName", "MyPassword"); 


     StreamReader streamReader = new StreamReader(upFile.InputStream); 
     byte[] fileContents = Encoding.Default.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(); 

     return RedirectToAction("/"); 
    } 

回答

0

此代碼爲我工作,試試吧:

var request = (FtpWebRequest)WebRequest.Create(ftp + fileName); 
     request.Method = WebRequestMethods.Ftp.UploadFile; 

     request.Credentials = new NetworkCredential(user, pass); 

     using (var input = File.OpenRead(filePth)) 
     { 
      using (var output = request.GetRequestStream()) 
      { 
       input.CopyTo(output); 
      } 
     } 

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

     response.Close(); 
+0

太謝謝你了。 – user3415602