2012-11-02 35 views
6

Chúng tôi hiện đang làm việc để cung cấp tùy chọn tải xuống cho người dùng tải xuống tệp MP3. Chúng tôi đang phát triển một ứng dụng thực thi đầy đủ trong hệ thống cục bộ mà không cần máy chủ.Tùy chọn tải xuống tệp bằng cách sử dụng tập lệnh khách hàng trong hệ thống khách hàng

Nhưng tùy chọn tải xuống tệp mp3 không hoạt động trong hầu hết các trình duyệt. Nó được mở trong các trình phát đa phương tiện sẵn có trong hầu hết các trình duyệt.

Chúng tôi đã kiểm tra các giải pháp cho điều này khi chúng tôi nhận được câu trả lời như đặt 'phân phối nội dung' bằng cách sử dụng tiêu đề ở phía máy chủ hoặc sử dụng tập lệnh PHP hoặc ASP để có thể tải xuống.

Tôi cũng đã kiểm tra plugin plugin explownload.js jquery. cũng có phần như thiết lập bố cục nội dung và đặt cookie. Vì vậy, tôi muốn biết là nó có thể tạo ra một liên kết tải xuống tệp (cho MP3) * tương thích với tất cả các trình duyệt chỉ sử dụng các kịch bản lệnh phía máy khách như Javascript hoặc jQuery.

Lưu ý quan trọng:

Trên thực tế quá trình này không được tải tập tin từ một máy chủ nhưng từ hệ thống khách hàng riêng của mình.

Đó là tệp MP3 phải sao chép từ một vị trí (Thư mục) đến một vị trí khác có trong hệ thống khách.

+0

Chỉ để chắc chắn, bạn không thể thay đổi tiêu đề của máy chủ trong đó mp3 đến từ đâu? – Dcullen

Trả lời

2

Giải pháp này đòi hỏi hỗ trợ trình duyệt của XHR2 (http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html)

Nó sẽ tải về MP3 vào một blob và sau đó sẽ tạo một URL bạn có thể truy cập blob. Trong quá trình này, bạn có thể ghi đè lên Mimetype vào bất cứ thứ gì bạn cần.

window.URL = window.URL || window.webkitURL; 

    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'http://robtowns.com/music/blind_willie.mp3', true); 
    xhr.responseType = 'blob'; 
    xhr.overrideMimeType('application/octet-stream'); 
    xhr.onload = function(e) { 
     if (this.status == 200) { 
      var blob = this.response; 
      $('#link').html('<a href="'+window.URL.createObjectURL(blob)+'">Download</a>'); 
     } 
    }; 

    xhr.send(); 

Ví dụ JSfiddle yêu cầu bạn phải tắt bảo mật web trong trình duyệt để cho phép yêu cầu tên miền chéo. http://jsfiddle.net/D2DzR/3/

+0

Cảm ơn bạn đã trả lời Dcullen. chúng tôi đang kiểm tra với phương pháp XHR2. Nhưng nó không hỗ trợ trình duyệt IE. Chúng tôi có các phương pháp khác để làm việc với chrome và firefox. Chúng tôi cần một phương pháp cho trình duyệt IE. – Ranjithsun

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