Vì vậy - Tôi đã sử dụng phương pháp tải lên tệp này một chút, nhưng có vẻ như Google Gears có hỗ trợ kém cho các trình duyệt mới hơn triển khai các thông số kỹ thuật HTML5. Tôi đã nghe thấy từ deprecated nổi xung quanh một vài kênh, vì vậy tôi đang tìm kiếm một thay thế có thể thực hiện các tác vụ sau và hỗ trợ các trình duyệt mới. Tôi luôn có thể rơi trở lại để bánh răng/tiêu chuẩn tập tin POST nhưng những mục sau đây làm cho quá trình của tôi đơn giản hơn nhiều:Xử lý tải lên tệp bằng JavaScript và Google Gears, có giải pháp nào tốt hơn không?
- Người dùng PHẢI để có thể chọn nhiều file để tải lên trong hộp thoại.
- I PHẢI có thể nhận cập nhật trạng thái khi truyền tệp. (thanh tiến trình)
- Tôi muốn có thể sử dụng
PUT
yêu cầu thay vìPOST
- Tôi muốn có thể dễ dàng đính kèm các sự kiện này vào các thành phần HTML hiện có bằng JavaScript. I E. Lựa chọn tệp phải được kích hoạt trên một cú nhấp chuột
<button>
. - Tôi muốn có thể kiểm soát thông số phản hồi/yêu cầu dễ dàng bằng JavaScript.
Tôi không chắc liệu trình duyệt HTML5 mới có hỗ trợ cho các bánh răng đối tượng trên máy tính để bàn/yêu cầu hay không hoặc có trình tải lên flash có các tính năng này mà tôi đang thiếu trong tìm kiếm trên google của mình.
Một ví dụ về mã tải lên sử dụng bánh răng:
// select some files:
var desktop = google.gears.factory.create('beta.desktop');
desktop.openFiles(selectFilesCallback);
function selectFilesCallback(files) {
$.each(files,function(k,file) {
// this code actually goes through a queue, and creates some status bars
// but it is unimportant to show here...
sendFile(file);
});
}
function sendFile(file) {
google.gears.factory.create('beta.httprequest');
request.open('PUT', upl.url);
request.setRequestHeader('filename', file.name);
request.upload.onprogress = function(e) {
// gives me % status updates... allows e.loaded/e.total
};
request.onreadystatechange = function() {
if (request.readyState == 4) {
// completed the upload!
}
};
request.send(file.blob);
return request;
}
Edit: rõ ràng flash là không có khả năng sử dụng các yêu cầu PUT, vì vậy tôi đã thay đổi nó vào một "like" thay vì một "phải" .
Chỉ cần thêm vào: Firefox 3.6 hỗ trợ API tệp HTML5. Mở trang này trong FF 3.6 để có bản demo :) http://demos.hacks.mozilla.org/openweb/FileAPI/ –
http://www.element-it.com/multiple-file-upload/flash-uploader. aspx là một điều khiển SWF cho những gì bạn muốn làm. –
@Todd Moses - Có vẻ ổn, nhưng thẻ giá 99 đô có tôi nhìn vào swfupload, không yêu cầu hỗ trợ «PUT' nào, mà tôi có thể phải làm việc ... (Tôi khá chắc chắn rằng hỗ trợ cho PUT là chỉ mất tích trong flash/flex) – gnarf