Javascript FileReader.readAsDataURL上载到express.js
我有以下代码要上传到Node.js/Express.js后端Javascript FileReader.readAsDataURL上载到express.js,javascript,node.js,express,Javascript,Node.js,Express,我有以下代码要上传到Node.js/Express.js后端 var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function (e) { var result = http.post('/files', e.target.result); result.success(function () { alert('done'): }); } 我的路线看起来像: app.p
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
var result = http.post('/files', e.target.result);
result.success(function () {
alert('done'):
});
}
我的路线看起来像:
app.post('/files', function (req, res) {
var cws = fs.createWriteStream(__dirname + '/media/file');
req.pipe(cws);
res.send('success');
});
当我用图像应用程序打开/media/文件时,会收到一条警告,提示它无法读取。当我用文本编辑器打开图像文件时,我看到里面是base64编码的字符串。在将字符串写入desk之前,是否需要先转换字符串?问题在于DataURL前面有元数据。在创建base64缓冲区之前,首先需要删除该部分
var data_url = req.body.file;
var matches = data_url.match(/^data:.+\/(.+);base64,(.*)$/);
var ext = matches[1];
var base64_data = matches[2];
var buffer = new Buffer(base64_data, 'base64');
fs.writeFile(__dirname + '/media/file', buffer, function (err) {
res.send('success');
});
从中获得了大部分代码。您使用的是哪种FileReader实现?不确定我使用的是Chrome 18。经过一番挖掘,似乎DataURL前面有一些我需要删除的元数据。是的,这也是我发现的(我自己也面临类似的问题)。可能拆分后再进行base64解码可以解决此问题。