【发布时间】:2016-10-20 13:48:15
【问题描述】:
我正在开发用于存储用户上传的文件的 API。
function uploadPhoto(req, res) {
var imagedata = new Buffer('');
req.body.on('data', function (chunk) {
imagedata = Buffer.concat([imagedata, chunk]);
});
req.body.on('end', function (chunk) {
fs.writeFile('success.jpeg', imagedata, 'binary', function (err) {
if (err) throw err
console.log('File saved.')
})
});
}
我使用 req.body.on('data') 时出错。 来自邮递员的数据
当我用 console.log("message: "+req.body) 打印出 req.body 的值时,它是字符串并且具有值:
我尝试像这样使用缓冲区写入文件
var writeFile = function (type, cb) {
var data = new Buffer(req.body, type);
fs.writeFile(type + '.jpeg', data, type, function (err) {
cb(null, data.length);
});
}
async.parallel([
writeFile.bind(null, 'binary'),
writeFile.bind(null, 'utf8'),
writeFile.bind(null, 'ascii'),
writeFile.bind(null, 'ucs2'),
writeFile.bind(null, 'base64')
], function (err, results) {
response.status(200).send({});
})
这将创建一些大小不同的 jpeg 文件,但无法将它们作为图像读取。
如何从用户那里存储此图像? 非常感谢。
【问题讨论】:
标签: node.js stream binaryfiles postman binary-data