我Blob
通过 XHR2 将多个分块的文件发送到 Node.js/Express 服务器。
如何在确保它们正确组合的同时在服务器上接收它们?当“一次”上传多个文件时,按照正确的顺序和正确的文件。
以下是我到目前为止的代码(前端和后端),但还没有考虑到多次上传。
前端:
// 'files' is of type FileList, directly from file input.
for (var i = 0, length = files.length; i < length; i++) {
var file = files[i];
var bytes = 51200; // 50 KB
var size = file.size;
var start = 0;
var end = bytes;
while (start < size) {
sendBlob(file.slice(start, end), file.name, file.type);
start = end;
end = start + bytes;
}
}
// sendBlob()
var sendBlob: function (data, filename, filetype) {
var xhr = new XMLHttpRequest();
xhr.open('POST', this.url, false);
xhr.setRequestHeader('X_FILENAME', filename);
xhr.setRequestHeader('Content-Type', filetype);
xhr.send(data);
};
后端:
app.post('/', function (req, res) {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
var filename = req.headers['x_filename'];
var newPath = __dirname + '/upload/' + filename;
fs.writeFile(newPath, body, function (err) {
res.send({
filename: filename
});
});
});
});
非常小的文本文件可以正确存储,但图像似乎总是被弄乱并最终得到更大的文件大小。更大的文本文件被正确写入,但第一个块似乎丢失了。