Node.js 节点只写入一半的二进制数据
这是我的简单快捷服务:Node.js 节点只写入一半的二进制数据,node.js,express,Node.js,Express,这是我的简单快捷服务: let express = require('express'), fs = require('fs'), path = require('path'); var app = express(); app.set("json spaces", 2); app.use(express.static(__dirname + "/static")); app.use(function(req, res, next) { var data
let express = require('express'),
fs = require('fs'),
path = require('path');
var app = express();
app.set("json spaces", 2);
app.use(express.static(__dirname + "/static"));
app.use(function(req, res, next) {
var data = new Buffer('');
req.on('data', function(chunk) {
data = Buffer.concat([data, chunk]);
});
req.on('end', function() {
req.rawBody = data;
next();
});
});
app.post("/upload/:filename", function(req, res) {
let path = "/tmp/" + req.params.filename;
fs.writeFile(path, req.rawBody, "binary", function(error) {
res.send({
message: "sadfasdf"
});
});
});
app.listen(3001, function() {
console.log("Started!");
});
我这样做是为了上传二进制数据:
curl -H "Content-Type: application/octet-stream" -X POST http://localhost:3001/upload/test.tiff -d @/home/vagrant/test.tiff
对于一个大约1100kb的文件,它实际上只会写622kb。有人能告诉我出了什么问题吗?问题出在我使用curl的方式上。我使用的是
-d
,应该使用--data binary
。为什么在下一行也向同一路径写入数据时将请求流传输到该路径?这是以前版本的复制品。我需要把它拿出来。