我可以帮您进行翻译。以下是翻译的结果:
这是服务器端:
一切正常,文件在服务器端正确保存...但它们的大小比源文件大约50%。我试图用
我需要从客户端(nodejs命令行)和服务器(express nodejs)流传输文件。
这是客户端代码:
var request = require('request');
var fs = require('fs');
// ...
var readStream = fs.createReadStream(file.path);
readStream.on('end', function() {
that.emit('finished');
});
readStream.pipe(request.post(target));
// ...
这是服务器端:
var fs = require('fs');
var path = require('path');
// ...
app.post('/:filename', function(req, res) {
req.setEncoding('binary');
var filename = path.basename(req.params.filename);
filename = path.resolve(destinationDir, filename);
var dst = fs.createWriteStream(filename);
req.pipe(dst);
req.on('end', function() {
res.send(200);
});
});
// ...
一切正常,文件在服务器端正确保存...但它们的大小比源文件大约50%。我试图用
hexdump
比较这两个文件的差异,发现服务器端的文件有时包含类似内容但具有0xC2的编码问题。我猜测这与编码有关。
setEncoding
。 - Paul Mougelfs.createWriteStream(filename, {encoding: 'binary'})
。 - levifs.createWriteStream(filename, {encoding: 'binary'})
没有起作用。Node API:编码可以是'utf8'、'ascii'或'base64'。 - Alessandro Pezzatoreq.setEncoding('binary');
就是解决方案。奇怪...当它不起作用时我添加了它。 - Alessandro Pezzato