2013-04-30 242 views
4

我在asp.net和c#中創建一個文件上傳器。 我只是想將上傳的文件直接保存到ftp服務器。 這可能嗎?如果可能的話,我該如何設置該ftp服務器認證信息。保存文件到FTP服務器

(127.0.0.1只是一個例子,我不能寫我的真實ip,而且我必須使用HTTP協議來獲取文件,我們的一些客戶端ISP不支持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,如果你的客戶端ISP的不支持FTP? – CathalMF 2013-04-30 09:43:37

回答

8

它很簡單。 下面的方法只是傳入文件名。很明顯,改變StreamReader中的目錄。

編輯:對不起剛剛注意到你說你的客戶端不支持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; 
    } 
} 

編輯:重新編寫了文件名。

+0

代碼返回Not Logged In錯誤。我認爲有任何語法記錄到ftp。請問你能幫幫我嗎? – user2163530 2013-04-30 09:59:34

+0

我的代碼或您的代碼返回「未登錄錯誤」? – CathalMF 2013-04-30 10:17:07

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    
相關問題