Nodejs发送multipart/form-data请求

Nodejs发送multipart/form-data请求,上传文件

    var FormData = require('form-data');
    var fs = require('fs');
    var http = require('http');
    var form = new FormData();
    form.append('file', fs.createReadStream("./filename.zip"));//'file'是服务器接受的key

    var headers = form.getHeaders();//这个不能少
    headers.Cookie = cookie;//自己的headers属性在这里追加

    var request = http.request({
      method: 'post',
      host: 'ice97.cn',
      path: '/uploadFile/',
      headers: headers
    },function(res:any){
      var str='';
      res.on('data',function(buffer:any){
        str+=buffer;//用字符串拼接
      }
      );
      res.on('end',()=>{
        var result = JSON.parse(str);
        //上传之后result就是返回的结果
      });
    });
    form.pipe(request);

由于nodejs大多数都是写接受表单请求的,所以很少的资料用nodejs作为客户端去上传文件。试了needle这个库,但是没成功,上面这个方法是成功的。希望对大家有帮助!
参考文章:
form-data
nodejs之http.request 网页抓取数据

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
你可以使用Node.js的`axios`库来调用文件上传接口。首先,确保你已经安装了`axios`库。然后,你可以按照以下步骤进行操作: 1. 导入`axios`库: ```javascript const axios = require('axios'); ``` 2. 创建一个函数来执行文件上传操作: ```javascript async function uploadFile(file) { try { // 创建一个FormData对象 const formData = new FormData(); // 将文件添加到FormData中,'file'为接口中接收文件的参数名 formData.append('file', file); // 发送POST请求,将FormData作为请求体 const response = await axios.post('http://your-upload-endpoint', formData, { headers: { 'Content-Type': 'multipart/form-data' // 设置请求头为multipart/form-data } }); // 获取上传结果 const result = response.data; console.log(result); } catch (error) { console.error(error); } } ``` 3. 调用`uploadFile`函数并传入要上传的文件: ```javascript const file = // 你的文件对象,可以使用Node.js的fs模块读取文件 uploadFile(file); ``` 在以上代码中,我们使用`axios`发送了一个POST请求,将文件作为FormData对象的一部分发送到指定的上传接口。确保将`http://your-upload-endpoint`替换为你实际的文件上传接口地址,并将`'file'`替换为接口中定义的接收文件的参数名。 请注意,你需要根据实际情况对代码进行适当的修改和调整。此外,你还可以根据接口文档中的要求添加其他请求头或参数。 希望能对你有所帮助!如果你有任何其他问题,请随时提问。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值