rek*_*a s 5 javascript image mongodb node.js
我是 Node Js 的新手。我需要包含用户的个人资料图片。我从 IOS 应用程序收到 base64 图像请求。我需要将它存储在图像文件夹中并将图像路径保存在 mongodb 数据库中。
我使用了以下代码,
var bitmap = new Buffer(req.body.profile_image, 'base64');
// write buffer to file
fs.writeFileSync("images/example.jpg", bitmap);
Run Code Online (Sandbox Code Playgroud)
其中 req.body.profile_image 是 base64 图像。
我收到以下错误,
TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
Run Code Online (Sandbox Code Playgroud)
req.body.profile_image 值将是,
+MZScHeJQ9Cz5dfxnEmIMHWMZyZYnYx8Rrhj0HbtfGUanv5w3UHUyADbiGsKJxeM1yV4uGwBS7cYlAec1w0AX6xg2A1O854UF8OS6PAP1MtzkeFnrNlD41U8XFeGrp1fn3jRMUs8sqS61umSS2rR2NDhppjZ4OvnOWBAq6X+sQNkhKkfZOdYsZOpz8fWIQb6wQ/GchVCgfZko4PMDg1DSumausG6o+2E6wKLLjKReUaHEQXKJV8h85XEKN4p/WEBvTHmmJ/IN178YJVgrGmfOScAuBPp+sggGA7/wC1kgbDiacbGABOcCLHVRpMuBQh5Xn4xqARF03pwkJT23LhxGLiSGp8mCVWDrzPf3iwp4C3nDSg2VUfNwgDvm6vrIiFJvp8ZHIdjoFx8BX0OH0+8TVii3GAKKc2kjz7dYqUCdsuMOm2hrr+h//Z
Run Code Online (Sandbox Code Playgroud)
请帮忙。
cha*_*win 10
编辑:这段代码对我有用。也许错误发生在以后。
var fs = require("fs");
var image = "+MZScHeJQ9Cz5dfxnEmIMHWMZyZYnYx8Rrhj0HbtfGUanv5w3UHUyADbiGsKJxeM1yV4uGwBS7cYlAec1w0AX6xg2A1O854UF8OS6PAP1MtzkeFnrNlD41U8XFeGrp1fn3jRMUs8sqS61umSS2rR2NDhppjZ4OvnOWBAq6X+sQNkhKkfZOdYsZOpz8fWIQb6wQ/GchVCgfZko4PMDg1DSumausG6o+2E6wKLLjKReUaHEQXKJV8h85XEKN4p/WEBvTHmmJ/IN178YJVgrGmfOScAuBPp+sggGA7/wC1kgbDiacbGABOcCLHVRpMuBQh5Xn4xqARF03pwkJT23LhxGLiSGp8mCVWDrzPf3iwp4C3nDSg2VUfNwgDvm6vrIiFJvp8ZHIdjoFx8BX0OH0+8TVii3GAKKc2kjz7dYqUCdsuMOm2hrr+h//Z";
var bitmap = new Buffer(image, 'base64');
fs.writeFileSync("images/example.jpg", bitmap);
Run Code Online (Sandbox Code Playgroud)
如果你说
console.log(req.body.profile_image)
Run Code Online (Sandbox Code Playgroud)
而不是
console.log(typeof req.body.profile_image)
Run Code Online (Sandbox Code Playgroud)
它会在打印之前将 req.body.profile_image 中的任何数据转换为字符串。您可能只是在评论时忘记了 'typeof',但如果您没有添加 'typeof',则无法确定它包含一个字符串。Buffer 有不止一个构造函数,它可能使用了错误的构造函数。
对于 lolz 尝试:
Buffer.from(String.fromCharCode.apply(null, new Uint16Array(req.body.profile_image)), "base64")
Run Code Online (Sandbox Code Playgroud)
什么被分配给 req.body.profile_image?
writeFileSync 的第一个参数是一个字符串,因此它不会导致类型错误。您能否更具体地说明 req.body.profile_image 中包含的内容?
附带说明一下,虽然我认为这与您的问题无关,但不推荐使用'new' 关键字实例化 Buffer 。也许使用Buffer.from(...)会让你朝着解决方案的方向前进。