javascript - HTML/JQuery : How to open a file; without flashing new tab; and retaining current page state?

标签 javascript jquery html

点击链接可下载文件。

在客户端的机器上:

1) 在某些系统上; IE 或 Firefox 有插件可以在浏览器中显示 PDF;单击链接。

2)在某些系统上,IE没有插件;所以当我们点击链接时;一个新的选项卡闪烁一秒钟,然后使用保存/另存为打开等选项对话框下载文件。

以下是链接打开的方式;这样页面的状态应该被保留:

<a href="http://www.gasl.org/refbib/Bible_King_James_Version.pdf" target="_blank">Holy Bible</a>

现在要求:

查询 1:客户不想从浏览器中删除插件并希望通过对话框下载文件。可能吗?

查询 2(重要): 我们可以下载文件吗?这样新选项卡就不会闪烁并且文件会被下载?

更新: 无法删除目标属性,就好像我会删除它一样,如果浏览器中仍然存在插件,那么页面状态将根本不会保留。

最佳答案

PHP:

在您的链接中,将 href 设置为“download.php?file=file.pdf 或数据库中的任何 ID,或者只是文件名,等等。 创建一个 download.php 文件:

$path = path/of/the/file/; 
$filename = $_GET['file'];
header('Content-Transfer-Encoding: binary');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Accept-Ranges: bytes');
header('Content-Length: ' . filesize($path));
header('Content-Encoding: none');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename=' . $filename);
readfile($path);

关于javascript - HTML/JQuery : How to open a file; without flashing new tab; and retaining current page state?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283190/

相关文章:

html - 应用 :focus pseudo-class on an element

javascript - 我应该如何在打开 SimpleModal 对话框的 BackBone.js View 中取消绑定(bind)事件?

javascript - 滚动后无法聚焦输入?

javascript - 如何从 TypeScript 项目中调用 JavaScript 库?

javascript - Canvas 点绘图在调整大小后不缩放

javascript - 使用多个 XSLT 文件转换单个 XML 文件

javascript - 复选框禁用上的 jquery 事件监听器

jquery - 仅在特定浏览器宽度下单击任意位置即可自动关闭菜单

jquery 仅删除/添加类一次

javascript - 为什么我无法在这里更改 id demo 的内部 html?