【问题标题】:force word docs, pdf, xls, etc to download by clicking on a link with jquery通过单击带有 jquery 的链接强制下载 word 文档、pdf、xls 等
【发布时间】:2011-03-16 17:07:10
【问题描述】:

我正在尝试让文档(即 pdf、excel、word doc 等)在下载框中打开。出于某种原因,excel 文件可以正常工作,但其他文件都不能正常工作。我想我需要使用 javascript 设置标题(我相信 jquery 没有执行此操作的核心功能,但如果我错了,请纠正我)。这是我的代码示例。

$(function() {
    $('a.media-link').click(function(event){
        var fileName = $(this).html();
        var property_id = $("input[name=capturePropId]").val();
        //alert(fileName);
        event.preventDefault();  //stop the browser from following
        window.location.href = '../uploads/properties/'+
        property_id+'/media/'+fileName+'';
        response.setHeader("Content-Disposition", "attachment; 
        filename=\"" + fileName + "\"");
    });
});

当我这样做时,我收到一个错误“response.setHeader 响应未定义。有人有什么想法吗?

【问题讨论】:

    标签: php javascript jquery http-headers


    【解决方案1】:

    您需要为每种文件类型设置不同的标题。看看here

    【讨论】:

      【解决方案2】:

      您无法使用 JavaScript 更改服务器的响应,并且您无法控制浏览器如何决定在选择此/新窗口之外打开新链接。由服务器决定为您的请求返回什么 - 即它可以对所有请求或任何其他类型的响应使用相同的 JPG 图像进行响应。

      您需要将设置标头的代码放在为请求提供服务的服务器上。如果您的服务器是 ASP.Net 之一(http://support.microsoft.com/kb/260519),则您的代码正确。

      【讨论】:

      • 好的,到目前为止我和你在一起。我想我对需要在我的 php 文件中设置标题的位置感到困惑。也许我的文件太混杂了不同的语言。我有 jquery 选项卡去一个 jquery 幻灯片去从数据库中提取的各种数据。这可能无法帮助您更好地理解为什么我仍然无法掌握这个概念,但它可能会。如果我提交了表单,我知道如何按照您的方式进行操作,但我不明白如何设置锚标记的标题。
      • 您不能在 JavaScript 中设置设置标头,并且在生成带有链接的页面的服务器端设置标头将无济于事。您需要在返回文件的 Url 处理程序上的服务器上设置此标头。在您的情况下,您似乎需要使 ../uploads/properties/XXX/media/FILE.NAME 网址由您的服务器代码(PHP)处理并返回带有附加标头的文件流。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2013-11-20
      • 2010-12-15
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多