【问题标题】:Node.js Decoding a Base64 Image and saving it via APINode.js 解码 Base64 图像并通过 API 保存
【发布时间】:2018-05-09 11:03:46
【问题描述】:

我一直在尝试让一个快速的 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);  
});

任何帮助将不胜感激!

【问题讨论】:

  • 经过进一步检查,问题似乎是因为“”(空格)被替换为“+”。知道如何解决这个问题吗?谢谢!

标签: node.js api express get base64


【解决方案1】:

您需要对 base64 字符串进行 url 解码,以将特殊字符替换回其原始形式。 IE。将+ 交换回空间

你应该可以使用decodeURIComponent()

var base_64 = decodeURIComponent(base_64_string);

【讨论】:

  • 感谢您的回复。我试了一下,虽然现在图像确实打开了,但存在相当多的伪影和损坏。我也尝试用 + 替换空格并收到相同的问题。还有其他值得尝试的想法吗?提前致谢!
猜你喜欢
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2011-11-22
  • 2013-07-22
  • 1970-01-01
  • 2012-06-21
相关资源
最近更新 更多