node中转图片上传

本文介绍了一个项目流程,客户端首先通过 Node.js API 接口上传图片,然后 Node.js 端进行简单处理后,将图片流转发给 .NET 后端进行保存。探讨了是否可以直接从客户端将图片流传递给 .NET 后端的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:

我们有一个项目客户端上传图片,先请求接口把图片上传到node js写的api接口后,经过简单的逻辑处理后,在调用后端的.net接口保存图片,由于node端不需要处理图片,我在想能不能直接把客户端上传的图片流直接传给后端呢?

代码如下:

node端程序
var imgData = req.body.file; //客户端后去到上传的图片信息 这个地方时base64的字符串
  if (!imgData) {
    return res.error('请上传图片');
  }

  // 过滤需要base64图片的头去掉
  var base64Data = imgData.replace(/^data:image\/\w+;base64,/, '');
  //然后存储到js buffer中
  var dataBuffer = new Buffer(base64Data, 'base64');

  // 通过form-data构造请求参数
  var data = new formData();
  data.append('file', dataBuffer, {
    filename: Date.parse(new Date()) + '.jpg', //指定图片的名称
    contentType: 'image/jpg', //图片类型,我这个地方写死了,可以从图片信息中拿到
    knownLength: dataBuffer.length //buffer长度
  });

//然后向后端发出请求,上传图片
fetch(url, {method: 'post', body: data, 
headers: data.getHeaders()})
      .then(function (res) {
        return res.json();
      }).then(function (body) {
        return callback(body);
      }).catch(function (err) {
        return callback(err);
      });

注:需要引用两个模块

 import formData from 'form-data';
 import fetch from 'node-fetch';
.net端程序
var action = new ContentResult() { Content = "OK" };
            try
            {
                var files = Request.Files;
                foreach (var key in files.AllKeys)
                {
                    var file = files[key];

                    var basePath =   HttpContext.Server.MapPath("~/upload/");
                    var fileName = DateTime.Now.ToFileTime().ToString();
                    var filePath = string.Format(@"{0}\{1}", basePath, file.FileName);
                    file.SaveAs(filePath);
                }
            }
            catch (Exception ex)
            {
                action.Content = "error";
                return action;
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值