2012-11-02 5 views
6

Wir arbeiten derzeit daran, Download-Option für die Benutzer zum Download von MP3-Dateien. Wir entwickeln eine Anwendung, die vollständig im lokalen System ausgeführt wird, dass kein Server benötigt wird.Datei-Download-Option mit clientseitigen Skript im Client-System

Aber das Herunterladen von MP3-Dateien Option funktioniert nicht in den meisten Browsern. In den meisten Browsern wird es in integrierten Media Playern geöffnet.

Wir haben die Lösungen dafür überprüft, wie wir Antworten wie Einstellung "Content-Disposition" mit Header auf der Serverseite oder mit PHP oder ASP-Skripten, um es herunterladbar zu bekommen.

Ich habe auch jquery fillendownload.js Plugin überprüft. das hatte auch einen Abschnitt wie das Setzen von Content-Disposition und Set-Cookie.

Also ich möchte wissen, ist es möglich, eine Datei Download-Link (für MP3) * kompatibel für alle Browser mit nur clientseitige Skripte wie Javascript oder jQuery zu erstellen.

Wichtiger Hinweis:

Eigentlich ist der Prozess nicht Datei von einem Server herunterzuladen, sondern von Client-System selbst.

Das ist die MP3-Datei sollte von einem Speicherort (Verzeichnis) an einen anderen Speicherort mit im Client-System kopieren.

+0

Nur um sicherzustellen, Sie sind nicht in der Lage, die Header des Servers zu ändern, wo die MP3s herkommen? – Dcullen

Antwort

2

Diese Lösung erfordert Browser-Unterstützung von XHR2 (http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html)

Es wird die MP3 in einen Klecks herunterladen und dann erstellt eine URL, über die Sie auf den Blob zugreifen können. Während dieses Prozesses können Sie den Mimetype auf alles, was Sie benötigen, überschreiben.

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(); 

Das JSfiddle-Beispiel erfordert, dass Sie die Web-Sicherheit in Ihrem Browser deaktiviert haben, um eine domänenübergreifende Anfrage zu ermöglichen. http://jsfiddle.net/D2DzR/3/

+0

Danke für die Antwort Dcullen. Wir überprüfen mit der XHR2-Methode. Aber IE-Browser werden nicht unterstützt. Wir haben andere Methoden, um mit Chrome und Firefox zu arbeiten. Wir brauchen eine Methode für IE-Browser. – Ranjithsun