2010-02-18 20 views
6

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?

  1. Người dùng PHẢI để có thể chọn nhiều file để tải lên trong hộp thoại.
  2. 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)
  3. Tôi muốn có thể sử dụng PUT yêu cầu thay vì POST
  4. 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>.
  5. 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" .

+0

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/ –

+0

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. –

+0

@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

Trả lời

1

(Sinh ra từ một bình luận về câu hỏi ban đầu, mỗi đề nghị những người hỏi của.)

Plupload là một trong những đứa trẻ mới nhất về khối và nó sử dụng phương pháp tốt nhất có sẵn (HTML 5, Flash, Gears, Silverlight) : http://plupload.com/

1

Trước đây tôi đã sử dụng các thẻ dựa trên flash như http://www.webresourcesdepot.com/open-source-flash-uploader-multi-bit-shift/. Chúng hoạt động tốt và chỉ phụ thuộc vào flash nên hoạt động trên hầu hết các máy tính. Tôi đã không tìm thấy một cách đáng tin cậy để làm điều đó với js một mình nhưng flash có thể được kiểm soát với js - đặc biệt là nếu bạn viết của riêng bạn.

hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan