Node.js写入原始图像数据

我正在编写一个node.js服务器,对于部分站点,用户需要能够上传图像。 上传图片时,服务器上的副本已损坏。

这是body parser的脚本。

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); 

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

这是因为数据是一个缓冲区,默认情况下,当你把它看作一个string(通过附加到另一个string),编码是UTF8。 解决scheme是不要把它当作一个string来对待,把它当作一个缓冲区来对待,那么你就不会得到格式不正确的代码点。 – 帕特里克·罗伯茨

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