Node.js写入原始图像数据

时间:2016-06-18 09:38:28

标签: node.js ansi

我正在编写node.js服务器,对于网站的一部分,用户需要能够上传图像。上传图像时,它在服务器上的复制已损坏。

这里是身体解析器的脚本。

request.body = {};
var busboy = new Busboy({headers: request.headers});
busboy.on("field", function(fieldname, val) {
  request.body[fieldname] = val;
});
busboy.on("file", function(fieldname, file, filename) {
  var fileContents = "";
  file.on("data", function(data) {
    fileContents += data;
  });
  file.on("end", function() {
    request.body[fieldname] = {"filename": filename, "contents": fileContents};
  });
});
busboy.on("finish", function() {
  next(request, response);
});
request.pipe(busboy);

上传文本文件时,服务器保存得很好,但图像文件中的某些符号无法正确发送或接收。

1 个答案:

答案 0 :(得分:1)

  

那是因为数据是一个缓冲区,默认情况下,当你把它当作一个字符串(通过将它附加到另一个字符串)时,编码是UTF8。解决方案是不要像对待字符串一样对待它,将其视为缓冲区,然后您将不会遇到格式错误的代码点。 - 帕特里克罗伯茨

帕特里克说,问题发生在fileContents += data;。这会将data缓冲区转换为字符串,该字符串不能包含我需要的字符。相反,我将每个数据缓冲区添加到一个数组中,然后将它们连接起来,并将其写入文件。

相关问题