我在我的项目中使用webapi上传文件。我正在用Postman进行测试。但是,**Request.Content.IsMimeMultipartContent()**总是返回false。
Postman 截图:
文件上传控制器代码:
public async Task<HttpResponseMessage> UserImageUpload()
{
try
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var userImageUploadPath = HttpContext.Current.Server.MapPath(CommonParameters.UserProfileImageServerPath);
var streamProvider = new CustomMultipartFormDataStreamProvider(userImageUploadPath);
await Request.Content.ReadAsMultipartAsync(streamProvider);
var files = new List<string>();
foreach (MultipartFileData file in streamProvider.FileData)
{
files.Add(Path.GetFileName(file.LocalFileName));
}
return Request.CreateResponse(HttpStatusCode.OK, files);
}
catch (Exception exception)
{
logger.ErrorFormat("An error occured in UserImageUpload() Method - Class:FileUploadController - Message:{0}", exception);
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
5条答案
按热度按时间wsxa1bj11#
这是 Postman 错误。请尝试移除内容类型标头。当传送实际的邮件时,浏览器会自动加入适当的标头并建立边界。
1sbrub3j2#
在Postman中没有必要在标题中提到内容类型,我尝试过发送没有内容类型的附件,它对我来说很好。当我使用
Content-Type: multipart/formdata
时,它抛出一个错误,说“无法获得任何响应”。Postman也使用Content-Type →text/plain; charset=utf-8
发送您的文件附件。g2ieeal73#
有几件事需要考虑:
1)如果您使用Postman,请不要传送任何内容类型信头
2)在Body中为您选择的文件指定Key(PFB屏幕截图供您参考)
pprl5pva4#
我在ARC中遇到了同样的错误,通过提供文件字段的名称(在第二个屏幕截图上的蓝色复选标记之后)解决了这个错误。
ia2d9nvy5#
您需要取消选中Content-Type(如果您已选中它),并让Postman为您添加它,如下图所示: