6

現在、MP3 ファイルをダウンロードするためのダウンロード オプションをユーザーに提供する作業を行っています。サーバーを必要としないローカル システムで完全に実行されるアプリケーションを開発しています。

しかし、mp3 ファイルのダウンロード オプションは、ほとんどのブラウザでは機能しません。ほとんどのブラウザーの組み込みメディア プレーヤーで開かれます。

サーバー側でヘッダーを使用して 'content-disposition' を設定したり、PHP または ASP スクリプトを使用してダウンロード可能にするなどの回答が得られたため、解決策を確認しました。

jquery filedownload.js プラグインも確認しました。これには、コンテンツの性質の設定やクッキーの設定などのセクションもありました。

そこで、Javascript や jQuery などのクライアント側スクリプトのみを使用して、すべてのブラウザーと互換性のあるファイル ダウンロード リンク (MP3 用)* を作成できるかどうかを知りたいです。

重要な注意点:

実際には、プロセスはサーバーからではなく、クライアント システム自体からファイルをダウンロードしています。

つまり、MP3 ファイルは、クライアント システム内のある場所 (ディレクトリ) から別の場所にコピーする必要があります。

4

1 に答える 1

2

このソリューションには、XHR2 (http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html) のブラウザー サポートが必要です。

MP3 が BLOB にダウンロードされ、BLOB にアクセスできる URL が作成されます。このプロセス中に、Mimetype を必要なものにオーバーライドできます。

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

JSfiddle の例では、クロス ドメイン リクエストを許可するために、ブラウザで Web セキュリティを無効にする必要があります。 http://jsfiddle.net/D2DzR/3/

于 2012-11-02T16:32:46.820 に答える