节点:将 base64 源写入图像文件
Node: Writing a base64 source to an image file
所以我正在开发一个带有文件输入的节点应用程序,该应用程序使用客户端 js 从图像中获取 base64 dataURI 代码并将其作为套接字消息发送到服务器。
生成的 base64 消息采用以下格式:
data:image/jpeg;base64,/9j/4QCcRXhpZgAASUkqAAgAAAA ...
在节点/服务器端,我想将此消息另存为图像文件:
fs.writeFile(newFilePath, src, function (err) {
if (err) throw err;
console.log('It''s saved! ' + entryID + '.' + fileType + ''n');
socket.emit('sendFileSuccess', entryID + ''n');
});
运行后,文件确实会以相似的文件大小保存到正确的位置。但是当我使用预览打开该文件时,该文件不是有效的图像("它可能已损坏或使用预览无法识别的文件格式。
我正在寻找最小的解决方案,我计划稍后添加任何所需的复杂性。
谢谢!
您需要
取出data:image/jpeg;base64,
部分。
var data = src.replace(/^data:image'/png;base64,/,'');
fs.writeFile(newFilePath, data, 'base64', function(err) {
if (err) throw err;
console.log('It''s saved! ' + entryID + '.' + fileType + ''n');
socket.emit('sendFileSuccess', entryID + ''n');
});
如果要将
图像作为正确的图像文件存储在服务器上,则需要将图像转换回二进制格式。为此,您需要解析并删除 base64 标头"data:image/jpeg;base64,",创建一个编码设置为"base64"的缓冲区,并将其存储在文件系统中,并从标头解析出适当的文件扩展名。
相关文章:
- 将包含SVG元素的HTML转换为图像文件
- 由多个图像文件组成的响应地图
- 使用文件夹路径名保存所有图像文件和文件名
- 如何将 html5 画布另存为窗口 8 Metro 应用程序中的图像文件
- 将图像文件存储在猫鼬模式中的二进制数据中,并以html形式显示图像
- 如何使用heatmap.js保存canvas标记生成的图像文件
- 如何使用html / angularjs保存图像文件
- 如何从 HTML 或 Javascript for Windows Phone 访问图像文件
- 在 Windows 现代(地铁)UI 应用中存储图像文件和音频文件的方法是什么?
- 节点 js 流星 js 图像文件上传图像损坏
- 从图像URL javascript html保存图像文件
- 如何使用AJAX读取图像文件并渲染到Canvas
- 浏览器和大量的图像文件处理
- 什么错误I'我在下面的jQuery代码中集成filepicker.io来上传一个图像文件
- 节点:将 base64 源写入图像文件
- 如何将图像文件以及JavaScript变量的值上传到服务器和数据库
- 如何从本地文件夹(磁盘存储)读取或获取图像文件,并使用nodejs服务器将其发送到Angularjs
- 如何使用expressnodejs上传图像文件并进行显示
- 如何用我在HTML5画布上绘制的src保存图像文件
- 图像文件因websocket文件传输而损坏