0

サーバーの助けを借りずにクライアント側でファイルを強制的にダウンロードする機能を作りたいです。次の関数が機能せず、ヘッダーが未定義であるというエラーが表示されます。助けていただければ幸いです。

function download() {

   var url = "C:\Koala.jpeg";
   var request = new XMLHttpRequest();
   header("Content-Type: application/force-download");
   header("Content-disposition: attachment; filename=url");
   header("Content-type: application/octet-stream");

       window.open(url, 'Download');
}
4

2 に答える 2

1

これは、この方法では不可能です。あなたの JavaScript 流儀では、C:\Koala.jpeg のパスのファイルを強制的にダウンロードするようブラウザに指示しています。それだけでなく、リクエスト オブジェクトに対して何もしていません。私が知る限り、関数 header() は存在しません。

これは、ブラウザがローカル ファイル システムからファイルをダウンロードする必要があることを意味します。したがって、ファイル システムへのスクリプト アクセスを許可します。これは重大なセキュリティ問題であり、決して起こらないでしょう。

ここで、本当にやりたいことがリモート サーバーからファイルをダウンロードすることである場合は、標準的な方法でファイルをダウンロードするように Web サーバーに指示する必要があります。ただし、ユーザーはダウンロードをキャンセルすることができますが、(開発者として) ユーザーの許可なしにファイル システムに対して何らかの操作を強制することはできません。

Web サーバーからファイルをダウンロードするには、環境に関する知識が必要になるため、正しい方向に進むことができます。

乾杯。

于 2013-11-13T10:23:30.870 に答える
0

これは実際に可能であり、私が思いついた解決策は非常に単純です。html の a タグに download 属性があれば、ファイルを表示するのではなく、ダウンロードします。これを使用して、download 属性と hidden 属性を持つタグを作成し、JavaScript でクリックを偽装して有効にします。次のコード スニペットは、猫の写真をダウンロードする必要があります。

document.getElementById('download').click();
<a id="download" href="https://docs.google.com/uc?id=0B0jH18Lft7ypSmRjdWg1c082Y2M" download hidden></a>

于 2015-06-25T15:19:44.293 に答える