【发布时间】:2014-06-12 03:02:24
【问题描述】:
我知道这个问题被问了好几次,但不幸的是,我似乎没有任何用处。
我将 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 方法中设置“二进制”参数。客户端总是得到 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);
【问题讨论】:
-
如何将文件发送到服务器?
-
我使用 XMLHttpRequest 并将其发布到 node/express
-
你在使用encodeURIComponent吗?
-
我已经用我如何将图片发送到节点的代码编辑了我的问题。
-
为什么不只是发送图像文件,为什么要乱用base64开头?
标签: javascript image node.js express base64