2016-09-09 1 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에는 다른 웹 요청이있었습니다. 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; 
} 
관련 문제