Tôi đang sử dụng trình thu thập để tải nhiều tệp cùng một lúc lên một thư mục cục bộ. Nhưng tôi gặp vài vấn đề.Xử lý tải lên với người bỏ qua trong sails.js (đang tiến hành)
upload: function (req, res) {
if (_.isEmpty(req.session.User)){
return res.json({ //---> 1
success: 0
});
}else{
res.setTimeout(0);
var MAXBYTES = 10*1000*1000;
//---> 2
if (req._fileparser.form.bytesExpected > MAXBYTES){
return res.json({
success: 0,
error: 'File size limit exceeded.'
});
}else{
req.file('file[]').on('progress', function(event){
return event; //---> 3
}).upload({
maxBytes: MAXBYTES
}, function whenDone(err, uploadedFiles) {
//---> 4
return res.json({
success: 1,
});
});
}
}
},
Lỗi đầu tiên //---> 1
Nếu người dùng không đăng nhập, tôi muốn kết thúc quá trình tải lên này và trả về thành công = 0. Điều này không hoạt động. Ở phía khách hàng, yêu cầu được giữ treo mà không có bất kỳ phản hồi nào.
lỗi thứ hai //---> 2
Tôi đã gặp lỗi trước đó như được mô tả ở đây https://github.com/balderdashy/skipper/issues/36 và để khắc phục nhanh, tôi đã sử dụng những gì ai đó đã sử dụng trong nhận xét tại github. Nhưng một lần nữa như trong bài toán 1, tôi đã gặp phải vấn đề này. Nếu kích thước tệp vượt quá MAXBYTES, tôi muốn kết thúc quá trình tải lên này và trả về thành công = 0 cho người dùng. Không quay lại phía khách hàng.
lỗi thứ ba //---> 3
Tôi muốn sử dụng khi đang tiến hành để tạo thanh tiến trình. Nhưng tôi nhanh chóng gặp phải vài vấn đề. Trước hết, việc sử dụng tiến trình làm chậm hệ thống xuống quá nhiều. Ngoài ra nó dẫn đến một lỗi trong bước 4.
lỗi thứ tư //---> 4
Nếu chúng tôi xóa mục ('tiến trình') từ bước 3, hoạt động như mong đợi. Khi hoàn tất tải lên, nó sẽ trả về thành công = 1 cho khách hàng. Tuy nhiên, khi bật ('tiến trình') có mặt return res...
trong bước //---> 4
không hoạt động và một lần nữa yêu cầu của khách hàng được giữ lại mà không có bất kỳ phản hồi nào.
vài câu hỏi: Tại sao không phải là công việc mã sau vào //---> 1
khi nó hoạt động trong //---> 4
nếu trên ('tiến bộ') không có mặt
return res.json({
success: 0
});
Tại sao về tiến độ chậm quá trình tải lên rất nhiều?
Btw ở phía khách hàng của tôi, tôi sử dụng plugin form.js. Và do đó yêu cầu của tôi trông như thế này:
$('#upload').ajaxForm({
uploadProgress: function(event, position, total, percentComplete){
console.log(percentComplete);
},
success: function(data) {
console.log(data);
}
});