node 转发文件上传,处理文件数据后丢失文件信息

第一种
try {
    const svgoResult:any = await svgoUp(nbuf.toString());
    if (svgoResult && svgoResult.data) {
    const formData = new FormData();     
      // 1.先将字符串转换成Buffer
      const fileContent = Buffer.from(svgoResult.data);
      // 2.补上文件meta信息
      formData.append('files', fileContent, {
        filename,
        contentType: 'text/xml',
        knownLength: fileContent.byteLength
      });
      formData.append('compress', 'true');
      formData.append('creator', 'f-iconfont');
      formData.append('platform', 'f-iconfont');
      
      formData.submit('http://**.com/upload', function(err, response, body) {
        let str = ''
        response.on('data', (chunk) => {
            //console.log(`响应主体: ${chunk}`);
            str += chunk;
        });
        /* 发送结束  增量发送pv数据 */
        response.on('end', () => {
          const body = JSON.parse(str); 
          if (body.statusCode === 0 && body.data[0] && body.data[0].url) {
            res.send({
              code: 0,
              data: body.data[0],
              msg: 'success'
            })
          } else {
            res.send({
              code: -1,
              msg: '上传文件失败'
            })
          }
        });
        //发送失败 重
        response.on('error', (e) => {
          console.log('文件上传失败', e)
          res.send({
            code: -1,
            msg: '上传文件失败'
          })
        })
    
  });
  
  // request.post({url:'http://**.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
  //   if (err) {
  //     return console.error('upload failed:', err);
  //   } else {
  //     console.log('Upload successful!  Server responded with:', body);
  //   }
    
  // });
} else {
  console.log('文件去掉注释压缩操作失败');
  res.send({
    code: -1,
    msg: '上传文件失败'
  })
}

} catch(e) {
res.send({
  code: -1,
  msg: '上传文件失败'
})
}
第三种
try {
    const svgoResult:any = await svgoUp(nbuf.toString());
    if (svgoResult && svgoResult.data) {
    const form = request.post('http://**.com/upload', {
    timeout: 20000
    }, (err, response) => {
    if (err || !res) {
      console.log(err);
    } else {
      const body = JSON.parse(response.body);
      if (body.statusCode === 0 && body.data[0] && body.data[0].url) {
        res.send({
          code: 0,
          data: body.data[0],
          msg: 'success'
        })
      } else {
        res.send({
          code: -1,
          msg: '上传文件失败'
        })
      }
    }
    }).form();
    form.append('compress', 'true');
    form.append('creator', 'f-iconfont');
    form.append('platform', 'f-iconfont');
    form.append('files', string2fileStream(svgoResult.data, { path: filename }));
第三种

存到本地再读出来

参考:https://github.com/ayqy/string-to-file-stream
https://www.cnblogs.com/ainyi/p/10242117.html
https://www.jb51.net/article/167903.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值