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

简介: nodejs使用axios以formdata形式上传图片

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


相关文章
|
JSON JavaScript 前端开发
基于promise用于浏览器和node.js的http客户端的axios
基于promise用于浏览器和node.js的http客户端的axios
76 0
|
7月前
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
|
4月前
|
JavaScript API
NodeJs——使用axios下载上传文件
NodeJs——使用axios下载上传文件
159 4
|
7月前
|
数据采集 JavaScript 前端开发
利用axios库在Node.js中进行代理请求的实践
利用axios库在Node.js中进行代理请求的实践
vue2 axios跨域解决方法 和nodejs+express跨域
vue2 axios跨域解决方法 和nodejs+express跨域
256 0
|
JavaScript 前端开发 API
NodeJs 后端开发 04 使用axios调用第三方服务API
目录 当我们需要访问其他服务的接口有什么JS库可以使用呢? 先看文档,直接打开Axios Github 编写Axios HelloWorld 创建一个新的NodeJS项目,引入axios包: 发送请求前需要启动商品服务 发送一个GET请求 发送一个POST请求,模拟添加商品数据
1140 0
NodeJs 后端开发 04 使用axios调用第三方服务API
|
JavaScript
Node.js:axios自定义headers请求头
Node.js:axios自定义headers请求头
183 0
|
JavaScript 前端开发 测试技术
基于Vue、Axios、Node.js的图书管理系统【网页前端高级编程】
基于Vue、Axios、Node.js的图书管理系统【网页前端高级编程】
基于Vue、Axios、Node.js的图书管理系统【网页前端高级编程】
|
JSON JavaScript Java
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(三)
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(三)
271 0
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(三)
|
存储 JavaScript Java
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(二)
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(二)
285 0
单体架构项目 后台管理系统 wan字长文 保姆及教学 Vue.js + Element UI 库 + node.js + axios + java +数据库 男女老少皆可使用(二)