Blob
의 XHR2에 여러 파일을 전송하여 Node.js/Express 서버에 보냅니다.들어오는 XHR2 데이터 처리 (BLOB)
올바르게 조립 된 상태에서 서버에서 어떻게받을 수 있습니까? 올바른 순서로, 그리고 여러 파일이 "즉시"업로드 될 때 올바른 파일로.
다음은 현재까지 가지고 있지만 여러 개의 업로드를 아직 고려하지 않은 코드입니다 (프런트 엔드 및 백엔드 모두).
프런트 엔드 :
// '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
});
});
});
});
아주 작은 텍스트 파일이 제대로 저장되지만 이미지가 항상 엉망 더 큰 파일 크기와 결국 얻을 것으로 보인다. 더 큰 텍스트 파일은 올바르게 기록되지만 첫 번째 청크가 누락 된 것 같습니다.
(시작 <= 크기) 문제가없는 첫 번째 청크를 해결하는 동안 문제가 발생합니까? –