axios使用multipart/form-data方式上传文件
需要借助FormData
,这在浏览器中已经自带了,但是如果在node中,需要安装一下对应的npm包
const FormData = require('form-data');
上传文件的来源,需要为stream,如果是本地文件,那么用fs
创建
const fs = require('fs');
const file = fs.createReadStream('local/path/image.jpg');
如果是远程文件,用axios读取
const axios = require('axios');
const file = (await axios.get('https://test.com/test.jpg', { responseType: 'stream' })).data;
上传文件完整代码
const FormData = require('form-data');
const axios = require('axios');
const file = (await axios.get('https://test.com/test.jpg', { responseType: 'stream' })).data;
const formData = new FormData();
formData.append('file', file);
const res = await axios.post(
'https://test.com/upload',
formData,
{
headers: {
...formData.getHeaders(),
}
}
);
其中,formData.getHeaders()
得到的是一个带boundary的multipart/form-data
文章原始链接:https://sijie.wang/posts/axios-multipart-upload
本站文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请保留原始链接
发表评论