2012-03-16 2 views
0

У меня есть следующий код, чтобы загрузить файл в формате PDF через FTP:Загрузить PDF-файлы через FTP в C Sharp

try 
     { 
      if (!File.Exists(localPath)) 
       throw new FileNotFoundException(localPath); 

      FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(ftpPath)); 
      request.Method = WebRequestMethods.Ftp.UploadFile; 
      request.Proxy = null; 
      request.UseBinary = true; 
      request.Credentials = new NetworkCredential(username, password); 

      byte[] data = File.ReadAllBytes(localPath); 

      using (Stream stream = request.GetRequestStream()) 
      { 
       stream.Write(data, 0, data.Length); 
      } 

      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
      if (response == null || (response.StatusCode != FtpStatusCode.CommandOK)) 
       throw new Exception("Upload failed."); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.ToString()); 
      throw e; 
     } 

Моя проблема, что будет загружать только текст без изображений. Как я могу загрузить файл, не читая его? Я имею в виду, я просто хочу выбрать и переименовать файл и загрузить его.

ответ

2

Используйте класс WebClient и используйте метод UploadFile. От msdn

String uriString = Console.ReadLine(); 

// Create a new WebClient instance. 
WebClient myWebClient = new WebClient(); 
myWebClient.Credentials=new NetworkCredential(username, password); 
Console.WriteLine("\nPlease enter the fully qualified path of the file to be uploaded to the URI"); 
string fileName = Console.ReadLine(); 
Console.WriteLine("Uploading {0} to {1} ...",fileName,uriString); 

// Upload the file to the URI. 
// The 'UploadFile(uriString,fileName)' method implicitly uses HTTP POST method. 
byte[] responseArray = myWebClient.UploadFile(uriString,fileName); 
+0

Является ли эта работа для загрузки файла Excel тоже.? – Praditha

+0

Да - оба являются двоичными файлами. – weismat

Смежные вопросы