2013-04-30 4 views
4

Я создаю загрузчик файлов в asp.net и C#. Я просто хотел сохранить эти загруженные файлы на ftp-сервер напрямую. Возможно ли это? И если это возможно, как я могу установить эту информацию аутентификации ftp-сервера.Сохранить файл на ftp-сервере

(127.0.0.1 - пример. Я не мог написать свой настоящий ip. И мне нужно получить файлы с использованием протокола HTTP. Некоторые из наших клиентов-провайдеров не поддерживают ftp. Это основная проблема.)

protected void submit_button_Click(object sender, EventArgs e) 
    { 
     string filename = Path.GetFileName(upload_file.FileName); 
     string fileExt = Path.GetExtension(upload_file.FileName); 

     if (fileExt == ".csv") 
     { 
      string folder = Server.MapPath("ftp://127.0.0.1/uploads/"); 
       upload_file.SaveAs(folder + "/" + filename); 
       ltr.Text = "Successful."; 
     } 
     else 
     { 
      upload_file.BorderColor = System.Drawing.Color.Red; 
      ltr.Text = "File type must be .csv."; 
     } 
    } 
+0

Я не совсем понимаю, как вы ожидаете, что сможете загрузить на FTP, если клиентский провайдер не поддерживает FTP? – CathalMF

ответ

8

Его довольно простой. Метод ниже передается в имени файла. Очевидно, измените каталог в StreamReader.

EDIT: Извините, только что заметили, что вы сказали, что ваш клиент не поддерживает FTP, поэтому ниже не работает.

public bool ftpTransfer(string fileName) 
{ 
    try 
    { 
     string ftpAddress = "127.0.0.1"; 
     string username = "user"; 
     string password = "pass"; 

     using (StreamReader stream = new StreamReader("C:\\" + fileName)) 
     { 
      byte[] buffer = Encoding.Default.GetBytes(stream.ReadToEnd()); 

      WebRequest request = WebRequest.Create("ftp://" + ftpAddress + "/" + "myfolder" + "/" + fileName); 
      request.Method = WebRequestMethods.Ftp.UploadFile; 
      request.Credentials = new NetworkCredential(username, password); 
      Stream reqStream = request.GetRequestStream(); 
      reqStream.Write(buffer, 0, buffer.Length); 
      reqStream.Close(); 
     } 
     return true; 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
     return false; 
    } 
} 

Edit: Переработан имя файла.

+0

Код возвращается Не зарегистрирован Ошибка. Я думаю, что есть какой-либо вход в синтаксис ftp. Не могли бы вы мне помочь, пожалуйста? – user2163530

+0

Мой код или ваш код возвращает «не авторизованы»? – CathalMF

0
string filepath = "~/txtfile/";//this is folder name wher you want to save the file 


       HttpFileCollection uploadedFiles = HttpContext.Current.Request.Files; 
       for (int i = 0; i < uploadedFiles.Count; i++) 
       { 
        HttpPostedFile userPostedFile = uploadedFiles[i]; 
        if (userPostedFile.ContentLength == 0) 
        { 
         continue; 

} 



    userPostedFile.SaveAs(Server.MapPath(filepath) + userPostedFile.filename); 
} //save file on the server    
Смежные вопросы