2013-04-14 77 views
3

我想創建一個API調用我的服務器,這將允許我上傳一個.csv文件。c#設置uploadFile內容 - 類型

客戶端代碼

string url = "http://testserver/testapi"; 
string filePath = @"C:\test.csv"; 
using (WebClient wc = new WebClient()) 
{ 
    wc.Headers.Add("Content-Type", "text/plain"); 
    byte[] responseArray = wc.UploadFile(url, filePath); 
} 

服務器端代碼

string savePath = testSavePath; 
foreach (string f in Request.Files.AllKeys) 
{ 
    HttpPostedFileBase file = Request.Files[f]; 
    file.SaveAs(savePath); 
} 

我在這條線得到一個例外byte[] responseArray = wc.UploadFile(url, filePath);

奇怪的是,當我看Request我看到

ContentType="multipart/form-data; boundary=---------------------8d006b7c2a5452c" 。在文檔的UploadFile我看到

尋找,當The Content-type header begins with multipart.

我的問題是爲什麼得到的contentType設置爲多引發WebException會被拋出,我如何阻止它這樣做?

+0

你有什麼異常? –

+0

如果你刪除'wc.Headers.Add(「Content-Type」,「text/plain」);'? –

回答

4

您的客戶端代碼似乎沒問題。異常可能來自服務器端。但這很難判斷,因爲你沒有分享這個例外。請做,你會得到更好的答案。

對於多部分內容類型:該WebClient.UploadFile使用Content-Type標題爲內容類型的文件(默認爲application/octet-stream如果未設定)的值,而不是一個整體的HTTP請求。實際的HTTP請求總是(正如您找到的)multipart/form-data(按照上傳文件的HTTP規範),您不能(也不應該)更改它。文檔中的註釋是指實際文件的內容類型。這意味着您不能要求WebClient上傳自己的多部分文件(該文件將包裝在另一個多部分HTTP信封中)。