【问题标题】:Prevent dowloading of files防止下载文件
【发布时间】:2014-02-13 05:54:12
【问题描述】:

我制作了一个小网页,其中有一些模态窗口 (jquery.simplemodal)。当显示这些窗口时,它们应该显示两个 pdf 文件(从服务器下载)。

<div id="modal1">  - hiden modal window
    <embed src="/FileDownload?id=100" width="100%" height="600px">
    <embed src="/FileDownload?id=150" width="100%" height="600px">
</div>

<table>
  <tr>
     <td>
        <a href="#" onclick="return activate(modal1)"> Modal Window 1</a>
     </td>
  </tr>
</tale>

我遇到的问题是,当页面加载时,也正在从服务器下载所有文件。

从 HTML 的角度来看,我已经读到没有办法避免这种情况。

您能否告诉我是否可以使用 Javascript 来执行此操作(例如,在第一次显示模式窗口时更新 srcembed 元素)?

http://stackoverflow.com 上,我发现了一些关于更改元素属性的主题,但对我没有任何作用。

JavaScript: Changing src-attribute of a embed-tag

Can i open a modal window from file A and displaying file B on the modal window?

谢谢!

附:这是一个 Intranet 应用程序。我只想避免每次打开页面时下载 20-40 个文件(每个几个 MB)。我正在考虑的另一个解决方案是使用 Java 小程序,但我认为这会使这个小项目复杂化。

【问题讨论】:

  • javascript 使用 html 来显示内容,如果 html 不能,那么 javascript 也不能​​。不过,您也许可以以某种方式将其嵌入到 Flash 文件中。
  • 啊,您的更新对问题进行了重要更改。是的,你可以这么做。您所需要的只是一个单击事件,该事件可以更改嵌入的 src(或完全替换它),以便用户单击他们希望查看的 pdf 的链接。
  • @Nucleon 一些浏览器(Chrome,也许是 FF?)至少可以愉快地渲染简单的 PDF 文件。您可以将它们粘贴到这些浏览器页面上的&lt;iframe/&gt; 中。

标签: javascript jquery html


【解决方案1】:

使用 jQuery。我相信这就是您想要做的:仅在单击弹出模式的链接时才加载嵌入文件?

$("a").click( function (e) {
    e.preventDefault();
    $("#modal1").append("<embed id='100' src='/FileDownload?id=100' width='100%' height='600px'/><embed id='150' src='/FileDownload?id=100' width='100%' height='600px'/>");
    $("#modal1").show();
});

And the Fiddle

【讨论】:

  • 谢谢。您发布的示例正在运行。我对其进行了一些更改(仅适用于某些链接并在其他 DIV 中插入数据)......当然不再有效。也许如果你有时间,你可以为我指明正确的方向(现在只是阅读关于 JavaScript 的内容)。这是代码jsfiddle.net/M4v9v
  • 干杯伙伴。我自己不是专家,但通过查看 JavaScript 控制台,我可以看到以下错误:Uncaught ReferenceError: activateDiv is not defined。我不确定这是为什么。我猜可能是因为在小提琴中激活 jQuery 使得 JS 部分中的所有代码都将放在 onLoad 函数中:$(window).load( function () { jQuery 代码在这里 }); 然后该函数只是在这个 onLoad 块中是本地的,在它之外是看不到的。但是请检查这个 fiddle
  • 再次感谢。在您的帮助下,我发现了以下错误:“没有包裹 - 在正文中”和调用函数 activateDiv 时缺少“#”。 final version fiddle
【解决方案2】:

Web 浏览器的本质是将文件下载到缓存中,以便在下次访问时或在页面更改期间显着减少显示时间。作为 Web 开发人员,您无法采取任何措施来防止这种情况发生。如果用户希望保持缓存清洁,用户可以在自己的浏览器中关闭此功能,但您和您的网站不能。有一些方法可以阻止查看者故意下载图像或文件,例如禁用对图像的右键单击,但精明的用户也有一些方法可以绕过这些方法。

PDF 文件尤其需要下载以加快查看速度。如果关闭此功能,用户体验将会非常缓慢,以至于将人们从您的网站赶走。

【讨论】:

  • 但是使用 javascript(按照 OP 的建议)来根据请求动态加载文档呢?
【解决方案3】:

即使无法完全保护您的文件,也有一些方法可以让您更难下载原始 PDF 文档,我们有一些 PHP 脚本可以帮助您,您可以在我们的桌面发布器中找到这些脚本(可在GPL 和商业)。

它可以免费下载,即使您不使用产品的其余部分,您也可以获取脚本。如果您下载它并在发布文档时展开高级设置并勾选“签名和混淆”,您应该会获得保护文件所需的脚本。

http://flexpaper.devaldi.com/flexpaper_flip_zine.jsp

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多