node中转图片上传

论坛 期权论坛 脚本     
匿名技术用户   2020-12-23 12:57   25   0

导读:

我们有一个项目客户端上传图片,先请求接口把图片上传到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;
            }
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP