介绍
所以我有一个 API,它将使用以下签名将文件上传到 Azure:
public async Task<IActionResult> Post([FromForm]IEnumerable<IFormFile> files)
这个 API 是用 Postman 构建和测试的,它适用于以下参数:
但是,当我尝试在我的 React 应用程序中使用 Postman 或 axios 生成的 AJAX jQuery 调用它时,IFormFile 文件变量为空。
handleFileChange = async (event) => {
let formData = new FormData();
let files = event.target.files[0];
formData.append('file', logo); // Can put "files" here or the imported picture "logo"
console.log("Form Data:", formData.get("files"));
await axios.post('api/files/uploadfiles', formData,{
'content-type': "multipart/form-data",
'Content-Type': "multipart/form-data",
})
.then(response => response.data)
.then(data => console.log("File Upload Response:" , data));
}
.NET Core 通过 axios/ajax 获取的 API 请求
.NET Core 通过 Postman 获取的 API 请求
你会注意到这里的主要区别在于 Postman 在 files 下有文件,而 axios 请求似乎只在“结果视图”下引用它,但在 files 下没有任何内容。我是否将正确的项目附加到表单中?我已经尝试使用导入的图像以及来自以下输入字段的动态图像:
<FormGroup id = 'file-form'>
<Label for="file">Attach Files:</Label>
<Input type="file" name="files" id="File" onChange={this.handleFileChange}/>
</FormGroup>
但没有运气。任何帮助将不胜感激!
更新 #1
在查看了一些 Microsoft文档后,我在 Microsoft文档中发现了一个警告,即表单的 enctype 为“multipart/form-data”。我尝试这样做无济于事。