本文介绍了上传一个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服务器无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!