在Postman工具中,使用Form-data方法将文件上传到asp.net MVC控制器可以正常接收文件,但是使用二进制方法上传文件控制器Action方法Request.Files无法接收文件,不好意思错误在哪里?
例如,控制器操作:
public class UploadFilesController : Controller
{
// GET: UploadFiles
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Test()
{
if (Request.Files.Count > 0)
{
var file = Request.Files[0];
return Json("OK! Received file");
}
else
{
return Json("No file Received");
}
}
}
以下是Postman二进制方法上传文件图标:
答案 0 :(得分:0)
我不认为可以从邮递员那里将图像/文件作为binary
发送,并且可以在控制器操作中将其显示在Request.Files
中。
如果您打开邮递员控制台( Alt + Ctrl + C 或View - > Show Postman Console),您可以看到请求数据以及响应。
使用表单数据以正常方式发送文件,您可以看到请求正文中包含大量有关该文件的信息:
使用二进制方法发送文件时,请求正文未定义:
因此,当控制器收到请求时,它不知道如何解释这个未定义的数据。我并不是说从原始输入流中提取文件是不可能,但是在表单数据中发布了大量数据,未发布在二进制文件中,这有助于控制器理解请求。
答案 1 :(得分:0)
由于您尚未明确设置Content-Type,因此Postman设置了默认的Content-Type。对于正文的表单数据类型,邮递员将Content-Type设置为multipart / form-data。并且它没有为二进制方法设置Content-Type。但是,在二进制类型中,附加的文件本质上必须是二进制的,即人类不可读。您的文件似乎是人类可读的文件,因此未按预期处理您的请求。
在不同情况下,您可以参考下面的链接获取默认的Content-Type。
使用邮递员发送请求-click here