【问题标题】:Asp.Net Web Api multiple files with additional data for eachAsp.Net Web Api 多个文件,每个文件都有附加数据
【发布时间】:2020-03-26 17:29:24
【问题描述】:

我正在尝试发送多个文件以及每个文件的一些数据。这是我的模型:

public class FileDTO
{
    [Required]
    public IFormFile File { get; set; }
    [Required]
    public string CategoryName { get; set; }
    [Required]
    public string CategoryDescription { get; set; }
    public string Detail { get; set; }
}

这是我的控制器:

[HttpPost("Upload/{id:int}")]
public async Task<IActionResult> Upload(int id, IEnumerable<FileDTO> appFileDTOs)
{
    ...
}

这甚至是正确的方法吗?如何在 Postman 中发送这样的请求来模拟它?

提前致谢!

编辑

我在 Postman 中这样尝试过:

除图片外,所有内容均正确提交。由于某种原因,图像始终为空...

【问题讨论】:

  • 当你是你的控制器时,'var files = HttpContext.Request.Form.Files;'的值是什么?

标签: asp.net api asp.net-core asp.net-web-api postman


【解决方案1】:

[] 表示集合/字典索引,而 dot(.) 表示有一个属性。

因此,您应该使用点表示重命名所有字段名称。

例如改变

appFileDTOs[0][File]

appFileDTOs[0].File

演示

【讨论】:

  • 非常感谢!!如果 Postman 能为这种场景提供更好的 GUI,那就太好了。你必须发送数据的方式对我来说有点像黑客攻击。
【解决方案2】:

试试这个对你有帮助,

从 formData 发送。

在模型键中将值发送为

[
{
"CategoryName":"Category1",
"CategoryDescription ":"Category1 Description",
"Detail":"Details "
},
{
"CategoryName":"Category2",
"CategoryDescription ":"Category2 Description",
"Detail":"Details2"
}

]

对于文件,将第一个文件作为 file1 发送,将第二个文件作为 file2 发送;

在服务器端,从方法名称中删除 FileDTO appFileDTOs 的 IEnumerable。 获取模型的值作为

var data = JsonConvert.DeserializeObject<List<FileDTO>>(Request.Form["model"]);

文件类似

   var fileUpload1 = Request.Form.Files["file1"];
   var fileUpload2 = Request.Form.Files["file2"];

【讨论】:

  • 谢谢,我稍后试试!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多