我按照此blog post上傳使用C#Web API的圖像。通過POSTMAN發送時,HttpRequest.Files爲空
該文章解釋瞭如何使用ARC來完成它,它工作正常。
但是當我嘗試使用POSTMAN來做同樣的事情時,它是失敗的。
這是我的請求快照。
我按照此blog post上傳使用C#Web API的圖像。通過POSTMAN發送時,HttpRequest.Files爲空
該文章解釋瞭如何使用ARC來完成它,它工作正常。
但是當我嘗試使用POSTMAN來做同樣的事情時,它是失敗的。
這是我的請求快照。
在您引薦到數據後正在上傳爲「X WWW的形式URL編碼的」
你的郵差屏幕截圖顯示了您上傳作爲「表格數據」
此外,您添加一個關鍵字「image01」,其中ARC示例似乎沒有發送密鑰。
如果你想使用表單數據要上傳的文件,你需要a different approach:
// POST api/files
public async Task<HttpResponseMessage> Post()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
string value;
try
{
// Read the form data and return an async data.
var result = await Request.Content.ReadAsMultipartAsync(provider);
// This illustrates how to get the form data.
foreach (var key in provider.FormData.AllKeys)
{
foreach (var val in provider.FormData.GetValues(key))
{
// return multiple value from FormData
if (key == "value")
value = val;
}
}
if (result.FileData.Any())
{
// This illustrates how to get the file names for uploaded files.
foreach (var file in result.FileData)
{
FileInfo fileInfo = new FileInfo(file.LocalFileName);
if (fileInfo.Exists)
{
//do somthing with file
}
}
}
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, value);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = files.Id }));
return response;
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
哼!這是非常棘手的。除了在工具中明確設置Content-Type
頭之外,您正在做的都是正確的。你一定不能那樣做。無論您何時將form-data
中的文件附加到該工具的Body
選項卡中,郵差自動檢測到Content-Type
並將其發送到您的發佈請求中。
將「」設置爲「multipart/form-data」涉及設置多個部分的邊界的複雜概念,詳細描述如下here。因此,設置Content-Type
標頭明確地調整了請求。設置邊界的重要工作是由郵遞員工具自動完成的,這就是爲什麼它不希望你在這種情況下明確設置content-type
。請參閱我是如何設置只Authorization
頭,同時上傳我的系統上的圖像文件:
你甚至不需要這個Authorization
頭,如果沒有你的Web服務器上的任何身份驗證。因此,在您的案例中,有效Headers
選項卡應該只是空的,即根本沒有鍵值對。
注意:僅供參考,圖像文件的正確內容類型是multipart/form-data
,即使您不需要在工具中明確設置它。
你的控制器是什麼樣的?如果您使用x-www,它會不同嗎? –