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);
		})

	})
});

nodejs使用axios以formdata形式上传图片-LMLPHP

11-03 00:26