2016-09-09 4 views
1

ftpの場所から文書をダウンロードしたいですか?一般的なのは、WordまたはPdfドキュメントです。あなたはどうですか?ftpWebRequestを使用してWord、Pdf、またはExcelドキュメントをダウンロードするには?

internal int Download(string filename, string sourcePath, string localPath, out string message) 
    { 
     message = string.Empty; 
     int download = 0; 

     try 
     { 
      string fullFilename = "ftp://" + host + "/" + sourcePath + "/" + fiilename; 
      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(fullFilename); 
      ftpRequest.Credentials = new NetworkCredential(username, password); 
      ftpRequest.UseBinary = true; 
      ftpRequest.UsePassive = true; 
      ftpRequest.KeepAlive = false; 
      ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; 

      if (!FileExists(fullFilename)) 
      { 
       message = string.Format("Bestand {0} niet gevonden.", fullFilename); 
       download = 1; 
      } 

      string tempFilename = Path.Combine(localPath, fiilename); 
      ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
      Stream responseStream = ftpResponse.GetResponseStream(); 
      FileStream fileStream = new FileStream(tempFilename, fileMode.Create); 
      int length = 2048; 
      Byte[] buffer = new Byte[length]; 

      int bytesRead = responseStream.Read(buffer, 0, length); 

      while (bytesRead > 0) 
      { 
       fileStream.Write(buffer, 0, bytesRead); 
       bytesRead = responseStream.Read(buffer, 0, length); 
      } 

      fileStream.Close(); 
      responseStream.Close();   } 
     catch (WebException ex) 
     { 
      //Console.WriteLine("Upload File Complete, status {0}", ftpResponse.StatusDescription); 
      message = ((FtpWebResponse)ex.Response).StatusDescription; 
      download = 2; 
     } 
     catch (Exception ex) 
     { 
      message = ex.Message; 
      download = 3; 
     } 
     finally 
     { 
      /* Resource Cleanup */ 
      if (ftpResponse != null) ftpResponse.Close(); 
      if (ftpRequest != null) ftpRequest = null; 
     } 

     return download; 
    } 
+0

申し訳ありません。FileExistsに別のWebリクエストがありました。 KeepAlive = falseだと思います。機能を一時的に残しておくと内容を保持しません。 – user1531040

答えて

1

これは有効な情報源です。

internal int Download(string filename, string sourcePath, string localPath, out string message) 
{ 
    message = string.Empty; 
    int download = 0; 

    try 
    { 
     string fullFilename = "ftp://" + host + "/" + sourcePath + "/" + filename; 
     if (!FileExists(fullFilename)) 
     { 
      message = string.Format("Bestand {0} niet gevonden.", fullFilename); 
      download = 1; 
     } 
     else 
     { 
      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(fullFilename); 
      ftpRequest.Credentials = new NetworkCredential(username, password); 
      ftpRequest.UseBinary = true; 
      ftpRequest.UsePassive = true; 
      ftpRequest.KeepAlive = false; 
      ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; 

      string tempFilename = Path.Combine(localPath, filename); 
      ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
      Stream responseStream = ftpResponse.GetResponseStream(); 
      FileStream fileStream = new FileStream(tempFilename, fileMode.Create); 
      int length = 2048; 
      Byte[] buffer = new Byte[length]; 

      int bytesRead = responseStream.Read(buffer, 0, length); 

      while (bytesRead > 0) 
      { 
       fileStream.Write(buffer, 0, bytesRead); 
       bytesRead = responseStream.Read(buffer, 0, length); 
      } 

      fileStream.Close(); 
      responseStream.Close();    
     } 
    } 
    catch (WebException ex) 
    { 
     //Console.WriteLine("Upload File Complete, status {0}", ftpResponse.StatusDescription); 
     message = ((FtpWebResponse)ex.Response).StatusDescription; 
     download = 2; 
    } 
    catch (Exception ex) 
    { 
     message = ex.Message; 
     download = 3; 
    } 
    finally 
    { 
     /* Resource Cleanup */ 
     if (ftpResponse != null) ftpResponse.Close(); 
     if (ftpRequest != null) ftpRequest = null; 
    } 

    return download; 
} 
関連する問題