TypeScript使用axios.post上传文件时Django无法获取request.FILES问题
错误点说明
- 请求体传参错误:调用
axios.post时不应该将FormData实例包裹在{form}对象中。axios对普通对象默认会执行JSON序列化,即使你指定了multipart/form-data请求头,最终发送的也是序列化后的JSON内容,而非符合规范的表单文件上传请求体,所以Django无法正确解析出上传的文件。 - 文件读取编码错误:onnx是二进制格式的模型文件,调用
createReadStream时不需要指定utf-8文本编码,错误的编码会破坏文件内容,导致文件无法被正常识别。
修正后代码
import { createReadStream } from 'fs'; import axios from 'axios'; import FormData from 'form-data'; // 读取二进制文件无需指定utf-8编码 const article = createReadStream('C:/Users/USER/Downloads/mnist-8.onnx'); const form = new FormData(); form.append('file', article); // 第二个参数直接传入FormData实例即可,不要额外包裹对象 axios.post(URL, form, { headers: form.getHeaders() } ) .then(res => { console.log(`statusCode: ${res.status}`); console.log(res); }) .catch(error => { console.error(error); })
内容的提问来源于stack exchange,提问作者JINWOO HONG
相关产品推荐
相关产品推荐

