c# - 带有文件和正文的 WebAPI 方法
问题描述
我有一个如下所示的 WebAPI 方法。上传文件就可以了,但我还需要一个附加对象,其中包含有关如何处理文件的信息。到目前为止我已经尝试过:
//Works fine but no body defined
[HttpPut("{id}")]
public IActionResult Put(string id, IFormFile file)
{
//Do stuff
return StatusCode(200);
}
和
public class UploadFile
{
//As simple example
public string Description { get; set; }
public Dictionary<string, string> Keys { get; set; }
}
//What I would like to have, but doesn't work
[HttpPut("{id}")]
public IActionResult PutTest(string id, IFormFile file, [FromBody] UploadFile info)
{
//Do stuff
return StatusCode(200);
}
使用带有以下输入的 SwaggerUI:
我收到 400 Bad Request 的消息"The input was not valid."
。SwaggerUI 显示请求的以下 cURL(似乎不包含正文上的任何信息):
curl -X PUT "https://localhost:5001/api/Document/test/test.txt" -H "accept: application/json" -H "Content-Type: multipart/form-data" -d {"file":{}}
我怎样才能最好地解决这个问题以获得我想要的结果?
解决方案
您是否尝试将 IFormFile 和 UploadFile 包装到单视图模型中:
public class FileViewModel{
public UploadFile UploadFile{get;set;}
public IFormFile File {get; set;}
}
然后
[HttpPut("{id}")]
public IActionResult PutTest(string id, FileViewModel vm)
{
//Do stuff
return StatusCode(200);
}
推荐阅读
- vue.js - 多个 v-for 在一行上
- typescript - TypeScript - 基于泛型类型的条件函数
- python - Python正则表达式获取所有内容,直到像''(year)'这样的表达式
- python - 如何使用 pipenv 运行 --upgrade?
- php - 序号联系表 7
- babeljs - babel v7 的 `babel-plugin-module-resolver` 的替代品是什么?
- java - JAXB JavaTypeAdapter 不工作
- matlab - 在 MATLAB 中为二维数组中的字段赋值
- javascript - 如何从另一个父类方法调用父类方法
- haskell - Haskell cabal中基础的依赖冲突