File 通过Axios将图像文件从客户端发送到.NET Core API(避免415响应)
我正在尝试将File 通过Axios将图像文件从客户端发送到.NET Core API(避免415响应),file,http,.net-core,axios,File,Http,.net Core,Axios,我正在尝试将.png图像从客户端发送到.NET核心API。我完全遵循API中的操作,因此我的控制器端点如下所示: [HttpPut] public async Task<IActionResult> SaveFile(List<IFormFile> files) {...} 我还尝试将图像文件包装到FormData类中,如下所示: const formData = new FormData(driversLicenseFile); axios.put(url, form
.png
图像从客户端发送到.NET核心API。我完全遵循API中的操作,因此我的控制器端点如下所示:
[HttpPut]
public async Task<IActionResult> SaveFile(List<IFormFile> files) {...}
我还尝试将图像文件包装到FormData
类中,如下所示:
const formData = new FormData(driversLicenseFile);
axios.put(url, formData , {...
我做错了什么?如何避免415响应代码
请求及其在浏览器中的显示方式包含在下面,以防帮助您发现任何明显的问题
当我做这样的事情时,我想,ASP.NET Core怎么知道如何将
图像文件
绑定到列表文件
您需要使用FormData
,并且应该附加一个与操作的参数名称匹配的名称,即文件
快速演示
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script type="text/javascript">
function upload(ev) {
let file = document.getElementById("file-upload").files[0];
let fd = new FormData();
fd.append("files", file);
axios.put(url, fd);
}
</script>
<input id="file-upload" type="file" oninput="upload()" />
功能上传(ev){
让file=document.getElementById(“文件上载”).files[0];
设fd=newformdata();
追加(“文件”,文件);
axios.put(url,fd);
}
Changingconst formData=new formData(driversLicenseFile)
toconst formData=new formData()
然后formData.append(“文件”,driversLicenseFile)代码>就是全部。不需要更改用户界面。不需要立即上传oninput
。非常感谢你的帮助!正如您所说,files
作为文件名,必须与.netcore
中的参数名匹配。很高兴它起作用了。仅包括作为演示的一部分的oninput=“upload()”
。我只是澄清我不需要它,因为我发现的几乎每个示例都需要立即提交表单。这让我想到可能需要立即提交,只是提到它,以便其他阅读此问题的人避免与我相同的困惑(这不是你造成的)。你的回答很好。
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script type="text/javascript">
function upload(ev) {
let file = document.getElementById("file-upload").files[0];
let fd = new FormData();
fd.append("files", file);
axios.put(url, fd);
}
</script>
<input id="file-upload" type="file" oninput="upload()" />