Node.js解码Base64图像并通过API保存

时间:2018-05-09 11:03:47

标签: node.js api express get base64

我一直试图让一个快速的node.js api工作,但我遇到了一些问题,我希望有人可以提供帮助。

我尝试做的事情:我尝试将base64编码的图像数据URI传递给我的node.js并将文件保存到我的服务器。我相信我几乎让它工作,但由于某种原因,图像被破坏了。当我只是在对dataURI进行硬编码时尝试运行脚本时,保存的图像非常完美。但是,当我使用GET请求时,保存的文件已损坏,我无法打开它。

这是我到目前为止所做的:

const express = require('express');
const fs = require('fs');
const app = express();

app.listen(3000, () => { console.log
('Running on port 3000...');
});

app.get('/api/users', function(req, res) {
let base64String = req.param('datauri');
let base64Image = base64String.split(';base64,').pop();

fs.writeFile('image.png', base64Image, {encoding: 'base64'}, function(err) {
console.log('File created');
});
res.send(base64Image);  
});

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您需要对base64字符串进行url解码,以将特殊字符替换回原始格式。 I.E.将+交换回空格

您应该可以使用decodeURIComponent()

var base_64 = decodeURIComponent(base_64_string);