nodejs使用axios以formdata形式上传图片
FormData是一种用于发送表单数据的接口,它可以用来上传文件。在前端,可以通过创建一个FormData对象,将要上传的文件添加到这个对象中,然后通过AJAX请求将这个FormData对象发送给服务器。服务器在接收到这个请求后,可以解析FormData对象,获取上传的文件。
首先安装三个包
npm i form-data npm i request npm i axios
代码
const FormData = require('form-data') var request = require('request') const axios = require('axios'); const fs = require('fs'); // 下载网络图片保存到本地 var src = 'https://img.zcool.cn/community/011aad554be56f000001bf72c38864.jpg@1280w_1l_2o_100sh.jpg' var readStream = request(src) readStream.pipe(fs.createWriteStream('./'+src.substr(src.lastIndexOf('/'),src.length))) readStream.on('end', function(response) { console.log('文件写入成功'); const formData = new FormData() formData.append('file', fs.createReadStream('./'+src.substr(src.lastIndexOf('/'),src.length))) formData.append('type',1) var headers = formData.getHeaders();//获取headers //获取form-data长度 formData.getLength(async function(err, length){ if (err) { console.log('------------------') console.log(err) return ; } //设置长度,important!!! headers['content-length']=length; axios.post(`https://admin.*****.com/api/api/upload`,formData,{headers}).then(datas=>{ console.log("上传成功",datas.data); // console.log('datas=============================') // 删除文件 fs.unlinkSync(__dirname+'/'+src.substr(src.lastIndexOf('/'),src.length)) }).catch(res=>{ console.log(res.message); }) }) });