0

UIでレンダリングされるクライアント側にJSON配列があります。ユーザーはコンテンツをファイルとしてダウンロードしたいと考えています。クライアント側からサーバーにコンテンツを送信し、ファイルとしてダウンロードするにはどうすればよいですか。

POST Ajax リクエストではファイルをダウンロードできないことがわかりました。どうすればできますか?

4

1 に答える 1

1

コンテンツがクライアントでしか利用できない場合は、それをサーバーに送信する必要があります。次のようなことを試してください:

<a id="download_link">Download</a>
$('#download_link').on('click', function(e){
    e.preventDefault();
    window.location = 'my-handler.php?json=' + myJsonString;
});
// or without jQuery
document.getElementById('download_link').onclick = function(){
   window.location = 'my-handler.php?json=' + myJsonString;
};

my-handler.php次に、サーバーに送信されたデータをファイル コンテンツとして使用して、 でダウンロードを強制します。

// Use equivalent in your server side script if not using PHP
$filename = 'download-'.time().'.json';
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-disposition: attachment; filename="'.$filename.'"'); 
exit($_GET['json']);

この方法を使用すると、現在のウィンドウは置き換えられませんが、ダウンロード プロンプトが開始されますが、必要に応じて新しいウィンドウで開くことができます。

これは迅速で汚い解決策です。これにより、人は何でも入力してファイルをダウンロードできることに注意してください。少なくともコンテンツを最初に検証するのが賢明かもしれません。コンテンツが大きすぎるという問題もあるかもしれません。

于 2013-06-04T17:18:47.500 に答える