本文介绍了上传一个base64连接codeD映像的Node.js服务器无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用MEAN.io,我试图上传一个base64连接codeD映像。

客户端,AngularJS:

  //图片我们要送出来
          VAR base64Image =文件[I]          var文件= {
            图片:base64Image,
            类型:类型,
            文件类型:延伸,
            或CharacterId:character._id
          };          VAR NEWFILE =新MediaSendBase64(文件);          NEWFILE。$保存(功能(图像){
            如果(!图片){
              的console.log(错误IMAGE');
            }
            其他{
              的console.log('成功');              的console.log(图片);
            }
          });

服务器端的NodeJS,控制器:

  app.use(bodyParser.json({限制:'50MB'}));
app.use(bodyParser.urlen codeD({限制:'50MB',延伸:真正}));exports.uploadBase64 =功能(REQ,资源,下一个){  VAR uploadPath = path.normalize(process.cwd()+'/包/字/公/资产/上传/'),
      数据=新的缓冲区(''),
      imgUrl的=不确定,公众// URL来显示图片
      类型=不确定;
  //万一'/上传directoy不存在
  如果(!fs.existsSync(uploadPath)){
    fs.mkdirSync(uploadPath,0755);
  }
  //解码的base64形象
  VAR数据=新的缓冲区(req.body.image的base64');  //创建该文件的名称 - > +或CharacterId类型+时间戳+分机
  变种文件名= req.body.characterId +' - '+ req.body.type +' - '+新的Date()的getTime()的toString()+。'。 + req.body.filetype;  //编写图像文件系统的
  fs.writeFile(uploadPath +文件名,数据功能(错误){    如果(ERR){
      的console.log(ERR);
      返回res.status(500)以.json({
        错误:不能上传图片。抱歉。'
      });
    }    的console.log('保存在HD');    的console.log('整理');    //发送成功响应
    res.json({
      imgUrl的:imgUrl的,
      型:
    });  });};

问题是存储在/上传不工作的文件。我看不到图像。所述的base64图像被发送和文件写入到硬盘,但它不可能将其打开。

有什么不对?任何建议?

谢谢!


解决方案

这也许是您要保存元数据文件。因此,从无效的base64使得德codeD数据。

下面是我的意思是:

 数据:图像/ PNG; BASE64,iVBORw0KG ....

中的数据:图像/ PNG; Base64是刚刚元,不带使用Base64因此codeD:

您需要剥离,从刺痛,然后去code,然后保存到磁盘。

我用这个方便的功能:

 函数去codeBase64Image(dataString){
  VAR匹配= dataString.match(/ ^数据:([A-ZA-Z - + \\ /] +);的base64,(+)$ /)
    响应= {};  如果(matches.length!== 3){
    返回新错误(无效输入字符串')​​;
  }  response.type =比赛[1];
  response.data =新缓冲液(比赛[2],'的base64');  返回响应;
}

So a snip from how I use it:

 var decodedImg = decodeBase64Image(imgB64Data);
 var imageBuffer = decodedImg.data;
 var type = decodedImg.type;
 var extension = mime.extension(type);
 var fileName =  "image." + extension;
 try{
       fs.writeFileSync(".tmp/uploads/" + fileName, imageBuffer, 'utf8');
    }
 catch(err){
    console.error(err)
 }

Where mime is the great node-mime lib. npm install mime.

这篇关于上传一个base64连接codeD映像的Node.js服务器无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-29 15:29
查看更多