2013-06-11 2 views
0

Helllo 전체,동일한 유닉스 서버에있는 한 폴더에서 다른 폴더로 FTP 파일

C#의 FTP 기능을 사용하여 한 폴더에서 다른 폴더로 FTP 파일을 전송할 수 있습니다.

두 폴더가 모두 동일한 UNIX 서버에 있습니다. 내가이 일을하려고 할 때

내가 'System.Net.FtpWebRequest'입력 'System.Net.FileWebRequest'형식의 개체를 캐스팅 할 수 없습니다 '오류가

감사

+0

시도한 코드를 게시하십시오. – Chris

답변

0

이 파일을 다운로드하고 그 파일을 특정 디렉토리에 업로드하십시오.

static void Main(string[] args) 
    { 
     CopyFile("countrylist.csv", "MySample.csv", "username", "password#"); 
    } 

    public static bool CopyFile(string fileName, string FileToCopy, string userName, string password) 
    { 
     try 
     { 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.mysite.net/" + fileName); 
      request.Method = WebRequestMethods.Ftp.DownloadFile; 

      request.Credentials = new NetworkCredential(userName, password); 
      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
      Stream responseStream = response.GetResponseStream(); 
      Upload("ftp://ftp.mysite.net/" + FileToCopy, ToByteArray(responseStream), userName, password); 
      responseStream.Close(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 

    public static Byte[] ToByteArray(Stream stream) 
    { 
     MemoryStream ms = new MemoryStream(); 
     byte[] chunk = new byte[4096]; 
     int bytesRead; 
     while ((bytesRead = stream.Read(chunk, 0, chunk.Length)) > 0) 
     { 
      ms.Write(chunk, 0, bytesRead); 
     } 

     return ms.ToArray(); 
    } 

    public static bool Upload(string FileName, byte[] Image, string FtpUsername, string FtpPassword) 
    { 
     try 
     { 
      System.Net.FtpWebRequest clsRequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(FileName); 
      clsRequest.Credentials = new System.Net.NetworkCredential(FtpUsername, FtpPassword); 
      clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile; 
      System.IO.Stream clsStream = clsRequest.GetRequestStream(); 
      clsStream.Write(Image, 0, Image.Length); 

      clsStream.Close(); 
      clsStream.Dispose(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
관련 문제