是否有任何Node包用于处理使用Express的分块上载?
问题描述:
我看到了很多关于如何通过Node和Express处理分块文件上传的文章;例如:是否有任何Node包用于处理使用Express的分块上载?
- https://scribie.com/blog/2014/09/chunked-upload-with-nginx-and-nodejs/
- http://www.componentix.com/blog/13/file-uploads-using-nodejs-once-again
这似乎是很多工作。当然有可用的节点包,这使得处理分块上传变得很简单?我看过NPM,但没有发现任何类似的东西。我想上传到我自己的服务器,而不是像S3一样的远程文件存储。
答
我认为你可以在快件处理块上传,而无需任何模块
app.post('/anyUrl', function(req, res){
var size = 0;
req.on('data', function (data) {
size += data.length;
console.log('Got chunk: ' + data.length + ' total: ' + size);
});
req.on('end', function() {
console.log("total size = " + size);
res.send("response");
});
req.on('error', function(e) {
console.log("ERROR ERROR: " + e.message);
});
});
你可以尝试obove代码进行POST请求
变种FS =要求( 'FS'); var request = require('request'); fs.createReadStream('path/to/file')。pipe(request.post('http://localhost:3000/anyUrl'));
虽然这确实提供了对每个分块上载数据的访问权限,但它没有提供处理边界的方法。 –
由于Chad的评论而被低估,这并没有解决HTTP中实际的分块协议,你应该看看HTTP Headers,让你知道哪些字节正在发送,而不是假定它们按顺序到达。请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests –