2012-02-27 24 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(); 


     ..... 

    } 

ファイルはアップロードされていますが、正しい数のページがありますが、新しいファイルにはテキストはありません。 (これらはpdfsですが、後でタイプの検証を行い、ただちに動作させようとしています)。

ありがとうございます!

答えて

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

関連する問題