[英]How to decode base64 to image file in Node.js?
我知道這個問題已經被問過幾次了,但是不幸的是,似乎沒有什么對我有用。
我將img的src發布到我的節點/表達式。 看起來像這樣:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JF ... UUUUAFFFFAH/2Q==
數據保存在圖片中。 我剪切了data:image-stuff並得到了原始的base64和文件類型。
var result = {
"type":"",
"data":""
}
var matches = picture.match(/^data:image\/([A-Za-z-+\/]+);base64,(.+)$/),response = {};
result.type = matches[1];
result.data = new Buffer(matches[2], 'base64');
require('fs').writeFile(mediaFolder+'/test.'+result.type, result.data, "binary", function(err){
res.status(500).send("error");
});
res.status(200).send("success");
當我嘗試打開保存的圖像時,它說:損壞或太大。 我還嘗試在writeFile方法中設置“ binary”參數。 客戶端始終獲得200 http狀態。
我不知道這是怎么回事。 我用在線解碼器檢查了原始的base64字符串。 效果很好。 我記錄了每個字符串/匹配項,一切對我來說都還不錯。
任何幫助都將很好解決這個問題。
提前致謝!
編輯:
這是我發送圖片的方式:
var base64Image = $('#show-picture').attr('src');
xmlhttp.open("POST","/webapp-ajax",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("picture="+base64Image);
我相信您需要在發送到服務器之前使用encodeUriComponent(base64)
。
嘗試發送JSON對象,然后在客戶端解析圖像。
例如:
var mimeType = image.split(';')[0];
var base64 = encodeUriComponent(image.split(',')[1]);
var imageData = {
"mimeType" : mimeType,
"src" : base64
}
...
xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send(imageData);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.