【发布时间】:2014-04-25 17:34:27
【问题描述】:
我正在尝试将请求的二进制正文写入文件并失败。该文件是在服务器上创建的,但我无法打开它。我在 Ubuntu 上收到“致命错误:不是 png”。以下是我提出请求的方式:
curl --request POST --data-binary "@abc.png" 192.168.1.38:8080
这就是我尝试将其与文件一起保存的方式。第一个 sn-p 是用于将所有数据附加在一起的中间件,第二个是请求处理程序:
中间件:
app.use(function(req, res, next) {
req.rawBody = '';
req.setEncoding('utf-8');
req.on('data', function(chunk) {
req.rawBody += chunk;
});
req.on('end', function() {
next();
});
});
处理程序:
exports.save_image = function (req, res) {
fs.writeFile("./1.png", req.rawBody, function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
res.writeHead(200);
res.end('OK\n');
};
这里有一些信息可能会有所帮助。在中间件中,如果我记录 rawBody 的长度,它看起来是正确的。我真的很困惑如何正确保存文件。我所需要的只是朝着正确的方向轻推。
【问题讨论】:
-
你能澄清“失败”吗?文件是否存在于服务器上但内容不正确?服务器上根本不存在该文件吗?您收到错误消息吗?
标签: javascript node.js fs binary-data