我在项目中使用webapi上传文件。我正在和邮递员一起测试。但是, Request.Content.IsMimeMultipartContent()始终返回false。
邮差截图:
FileUploadController代码:
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);
}
}
答案 0 :(得分:9)
这是邮差错误。尝试删除Content-Type标头。发送实际的帖子时,浏览器会自动添加正确的标题并创建边界。
答案 1 :(得分:2)
在Postman中没有必要提及标题中的Content-Type,我尝试发送没有Content-Type的附件,它对我来说很好。
当我使用Content-Type: multipart/formdata
时,它会抛出错误,说“无法获得任何响应”。邮递员也会使用Content-Type →text/plain; charset=utf-8
发送您的文件附件。
答案 2 :(得分:1)
答案 3 :(得分:0)
可能有点晚了。我在ARC中遇到了同样的错误,并通过提供文件字段的名称(在第二个屏幕截图上的蓝色复选标记之后)解决了此问题