2013-02-25 113 views
6

我有一個客戶端應用程序,它向asp.net URL發送POST請求(它用於將文件上傳到.NET)。如何在.NET中將POST請求內容保存爲文件

如何使asp.net頁面收到這個請求並將其保存爲一個文件?

@ Darin Dimitrov 我試過了你的代碼,但是我得到了500 internal server error我該如何跟蹤它?!

+0

我認爲這是一個有效的問題整個請求。如果你正在做一個IFRAME帖子來上傳IE <= 9的文件,看起來像AJAX,那麼你需要創建一個帶有文件的html表單,並將其發佈到.NET頁面。這正是我想要做的。那麼問題是,ASPX頁面如何從發佈的數據中提取文件。這就是問題所在。 – Sean 2014-07-30 21:10:36

+1

我同意@Sean ...這是一個有效的問題...不知道它爲什麼被關閉。 – FastTrack 2014-11-19 16:49:36

+0

我注意到,有時問題已經關閉,因爲它們沒有用最好的英語寫成。這是一個絕對愚蠢的理由來結束一個問題。如果問題的內容是合法的,那麼其他問題應該如何處理? – 2017-10-25 18:33:42

回答

17

如果客戶端使用multipart/form-data請求編碼(這是上傳文件的標準),您可以從Request.Files集合中檢索上傳的文件。例如:

protected void Page_Load(object sender, EventArgs e) 
{ 
    foreach (HttpPostedFile file in Request.Files) 
    { 
     var fileName = Path.GetFileName(file.FileName); 
     var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
     file.SaveAs(path); 
    } 
} 

,或者如果您知道客戶端所使用的名稱,你可以直接訪問它:

HttpPostedFile file = Request.Files["file"]; 

如果在另一方面,客戶端不使用標準的編碼要求您可能需要從Request.InputStream讀取文件。

+0

可以請給我一個完整的例子,我不是.NET專家。我已經完成了與Android客戶端,並希望使服務器端組件? – Adham 2013-02-25 16:52:52

+0

當然,我已經用一個例子更新了我的答案。 – 2013-02-25 16:54:35

+0

謝謝先生,這是否適合作爲客戶端?http://stackoverflow.com/questions/1067655/how-to-upload-a-file-using-java-httpclient-library-working-with-php-奇怪的pr/1068132#1068132 – Adham 2013-02-25 17:08:56

4

您還可以保存使用

HttpContext.Current.Request.SaveAs(filename,includeHeaders) 

假設數據沒有被上傳的多/ form-data的

+0

tnx,我用Simple-Ajax-Uploader在mvc或webforms上傳時使用這段代碼。 https://github.com/LPology/Simple-Ajax-Uploader – 2015-09-07 08:14:50

相關問題