このコード<a href="FILEPATH">download PDF</a>
を使用してPDFのリンクを直接ダウンロードしましたが、このコードはGoogle Chromeでのみ機能します
Mozilla Firefox と IE8 でもこの作業を行うのを手伝ってくれる人がいますか? Mozilla Firefox でテストしようとすると、リンクは開きますが、[名前を付けて保存] ウィンドウは表示されません。
<a id="save_data" href="">link</a>
window.URL = window.webkitURL || window.URL;
var a = document.getElementById('save_data');
var data = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==';
var filename = 'qqq.pdf';
a.download = filename;
a.href = data;
a.textContent = 'Downloading...';
//release memory
a.onclick = function(e){
save_cleanup(this);
};
//force click
document.querySelector('#save_data').click();
function save_cleanup(a){
a.textContent = 'Downloaded';
setTimeout(function(){
a.href = '';
var element = document.getElementById("save_data");
element.parentNode.removeChild(element);
}, 1500);
};
私は PHP ヘッダーを使用するので、URL として次のようなファイルを参照します。
<a href="/download.php?file=myFile.pdf">download PDF</a>
次に、php を使用してファイルを配信します。
<?php
/* put some validation and injection protection here */
$approvedFiles = ["myFile.pdf","myOtherFile.pdf"];
if (!in_array($_GET['file'],$approvedFiles)){
header("HTTP/1.1 404 Not Found");
die();
}
//otherwise
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="myFile.pdf"');
readfile('myFile.pdf');
注: 疑似コードは完全ではありません :)