【问题标题】:How to make a link to download a server file on the browser?如何在浏览器上创建链接以下载服务器文件?
【发布时间】:2019-08-31 10:56:39
【问题描述】:

我正在尝试创建一个简单的下载链接

我要下载的文件是用户可以上传的.pdf,现在我想让它可以下载。用弹出框,你知道的,或者就在chrome下载栏上

我已经尝试了每个答案所说的:

<a href="<?=$GUIDELINES_PDF_DIR . $projectId . '.pdf'?>" download="guidelines.pdf">Download PDF</a>

但这会导致“失败 - 没有文件”,即使当我检查时

 if(file_exists($GUIDELINES_PDF_DIR . $projectId . '.pdf'))

它返回真!

其他一些注意事项:

  • 我对服务器的东西很不满意,所以也许同一个链接在 PHP 和 HTML 上不起作用?那样的话,我怎么才能找到文件呢?

  • 此链接在&lt;form&gt; 中,所以我真的不想在其中创建另一个&lt;form&gt;,或者做任何损害用户输入信息的事情

非常感谢:)

【问题讨论】:

  • $GUIDELINES_PDF_DIR是服务器中的路径还是可以通过web访问?
  • 如果您导航到https://host/path/to/pdf/guidelines.pdf,您是否能够从浏览器访问该文件?另外,$GUIDELINES_PDF_DIR 是绝对路径还是相对路径?
  • @frz3993 我刚刚检查过,似乎无法访问。如果我把它放在浏览器上它是“找不到”
  • @JimNilsson 哦,这是相对的,我想!它不包含服务器位置,并且以“/”开头。如果我把它放在浏览器上,它说找不到:/

标签: javascript php jquery html pdf


【解决方案1】:

$GUIDELINES_PDF_DIR 是您服务器硬盘上的一个目录。

您创建的结果路径是相对于您的服务器硬盘的根目录,而不是您的 Web 服务器的 DocumentRoot。

您需要在生成 URL 时考虑这种差异。

【讨论】:

  • 天啊...经过这么长时间的寻找,阅读您的答案后一切都变得有意义!非常感谢,链接现在有效:D
【解决方案2】:

使用正确的标题:

header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='downloaded.pdf'");

【讨论】:

  • 我有点困惑...链接如何与此交互?如果用户点击下载pdf,我该如何调用这段代码?
  • 如果找不到文件,那将无济于事
  • URL 也直接指向 PDF 文件,因此您不能只向其中添加 PHP 代码。
猜你喜欢
  • 2011-12-05
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多