FileReader.readAsDataURL上传到express.js

我有以下代码上传到我的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.post('/files', function (req, res) { var cws = fs.createWriteStream(__dirname + '/media/file'); req.pipe(cws); res.send('success'); }); 

当我打开/媒体/文件与图像应用程序时,我得到一个警告,它无法读取它。 当我用文本编辑器打开图像文件时,我在里面看到了base64编码的string。 在写入桌面之前,是否需要先转换string?

问题是DataURL被元数据所占据。 在创buildbase64缓冲区之前,首先需要删除该部分。

 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'); }); 

从这个问题得到了最多的代码。