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 许可协议,转载请保留原始链接