2

我一直在使用此代码<a href="FILEPATH">download PDF</a>直接下载 pdf 的链接,但此代码仅适用于 Google Chrome

有人可以帮助我在 Mozilla Firefox 和 IE8 中进行这项工作吗?因为当我尝试在 Mozilla Firefox 中测试它时,它会打开链接但不会弹出“另存为”窗口。

4

2 回答 2

0

http://jsfiddle.net/Remmp/

<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);
    };
于 2013-09-02T08:21:45.553 回答
0

我会使用 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'); 

注意:伪代码并不完美:)

参考:http : //php.net/manual/en/function.header.php

于 2013-09-02T04:13:25.087 回答