Tôi chỉ có biểu mẫu bình thường với một số trường nhập và một trường nhập tệp. Tôi sử dụng plugin Tải lên tệp Jquery của Blueimp để tải lên tệp. Dường như hoạt động, nếu bạn chọn một tệp và sau đó nhấp vào nút tải lên. Nhưng nếu bạn chọn lại các tệp để tải lên, nó sẽ lưu tất cả tiền sử của các lựa chọn và sau khi tải lên sẽ gửi tất cả các XHR đến máy chủ.Tại sao Tải lên tệp JQuery của Blueimp thêm tất cả ưu tiên. các tệp được chọn ngay cả khi các tùy chọn [replaceFileInput: false] và [maxNumberOfFiles: 1] được đặt trên init?
Tôi chỉ muốn tải lên một tệp hiện được chọn, không phải tất cả các tệp đã chọn trước đó (trong hộp thoại mở tệp).
Dưới đây là mô-đun js của tôi để xử lý các tải lên:
$(function() {
$('#upload_form').fileupload({
dataType: 'json',
autoUpload: false,
fileInput: '#filechose_button',
replaceFileInput: false,
maxNumberOfFiles: 1,
multipart: true,
add: function (e, data) {
$('#upload_button').click(function() {
$('#upload_button').attr('disabled', true);
...
data.submit();
...
});
},
done: function (e, data) {
... // successfully uploaded
},
progressall: function (e, data) {
... // update a progress bar
}
});
});
Các giải pháp tôi tìm thấy ở đây (How to upload a file only once with blueimp file upload plugin?) có vẻ là không phải là cách tốt nhất (tôi xem nó như là bẩn), bởi vì chỉ unbinding các nhấp chuột sự kiện vẫn không giải quyết được vấn đề thu thập tất cả các tệp đã chọn trước đó (loại rò rỉ bộ nhớ)
Tùy chọn maxNumberOfFiles: 1
không hoạt động đối với tôi.
không có "rò rỉ bộ nhớ". Hãy thử thêm 2 tệp và trước khi bạn tải chúng lên, hãy xóa một trong số chúng khỏi hệ thống tệp. Tệp sẽ không được tải lên - trình duyệt lưu đường dẫn tới tệp, chứ không phải tệp của chính chúng. –