【问题标题】:How to store a file reference for a PDF file in MYSQL to retrieve in php如何在 MYSQL 中存储 PDF 文件的文件引用以在 php 中检索
【发布时间】:2019-11-23 12:23:18
【问题描述】:

我正在尝试在 MySQL 中存储对 PDF 文件的引用,然后我想将一些文件加载​​到网页上。当我单击文件名时,我希望加载文件。如何将引用存储在 MySQL 中并通过 PHP 访问?

我已阅读许多建议不要将文件直接添加到 MySQL 并仅存储引用的帖子,但我找不到指导如何在 MySQL 中仅存储文件的引用/路径的教程或说明通过 PHP 访问。

<?php 
     $file = 'BinarySearch.pdf';
     $filename = 'BinarySearch.pdf';
     header('Content-type: application/pdf');
     header('Content-Disposition: inline; filename = "' .$filename . '"');
     header('Content-Transfer-Encoding: binary');
     header('Accept-Ranges: bytes');
     @readfile($file);
?>

上面的代码只是直接打开了直接存储在服务器上的文件。我不确定如何在 MySQL 中存储路径。然后在我的网页上,我想单击一个按钮来检索文件。 (我有多个要存储的文件。)提前非常感谢您,但我根本找不到如何执行此操作以及它对我的项目不可或缺。

【问题讨论】:

  • 您的代码与您的问题无关。如果您将文件路径存储在 DB 列中,请向我们展示该代码。
  • 您好,感谢您的浏览!问题是我在网上尝试了许多不同的位,现在我没有任何可以显示的代码。我只知道我想要实现什么,并且真的在努力实现它。比如,如何存储文件引用,然后如何检索它 - 我在网上找不到任何地方如何做到这一点!
  • 文件引用只是文件的路径。您将其作为任何其他文本字符串存储在数据库中。请参阅有关 PHP 中 PDO 的教程:phpdelusions.net/pdo#dml

标签: php mysql pdf download uploading


【解决方案1】:

虽然这个问题不是很清楚,但我会通过一些假设来尝试一下。

如您所见,我强烈反对将文件作为字符串存储在数据库中。

你有几个选择 -

使用 Amazon S3 等云提供商将 pdf 文件推送到存储桶,该存储桶返回引用该文件的 URL。然后将该 URL 存储到表中作为参考,因为 API 将返回上传文件的链接。当您需要在请求时渲染文件时,只需通过数据库中的引用找到文件并像您当前所做的那样渲染它。这将需要更多的工作,因为您需要设置您的云提供商帐户、配置存储桶(存储)并将 SDK 添加到您的项目以与存储引擎进行通信。

另一种方法是在您的 Web 主机中指定一个文件夹,该文件夹可通过您的网站 url 访问。例如 - https://yourdomain.com/files/9d6fdb34-f92f-4078-9ab3-e5ada4522f2e.pdf

文件 (9d6fdb34-f92f-4078-9ab3-e5ada4522f2e.pdf) 物理存储在您的云主机本地文件夹中,该文件夹可以是 /var/files 之类的任何位置,但是当用户输入 https://yourdomain.com/files/ 和对该文件的引用可以与其他元数据一起存储在 MySQL 中,例如您的案例 -

file_guid :  9d6fdb34-f92f-4078-9ab3-e5ada4522f2e
file_name : BinarySearch
file_extension: pdf
user_id : 123 (if applicable)

在用户界面中,您的用户会看到 (BinarySearch.pdf) 文本链接到 https://yourdomain.com/files/9d6fdb34-f92f-4078-9ab3-e5ada4522f2e.pdf

当您将文件存储到 /var/files/ 时,如果您的用户正在上传文件,请始终将文件名重写为唯一的 uuid,但按照我上面指定的方式将他们上传的文件名存储在您的数据库中。

我希望这会有所帮助。

祝你好运。

【讨论】:

  • 我真的很抱歉这个问题不清楚 - 我对编程真的很陌生,因此我的话不清楚。但是非常感谢您的回复,所以我使用了您提到的第二种方法并且它有效!它完全符合我的需要!我将文件路径 192.167.90.2/SupportTools/BinarySearch.pdf 存储在 mysql 中,然后使用 SQL 查询检索文件路径并创建可点击的链接来查看 PDF 文件!!巨大的帮助,非常感谢 - 从早上 7 点开始就一直在尝试!
  • @NaiveLearner 太棒了!很高兴听到它对您有用。尽管您是编程新手,但您快速掌握和实施解决方案的能力也给我留下了深刻的印象。不错的作品。一个小细节,我强烈建议你不要将完整的文件链接存储在 mysql 中。而不是 192.167.90.2/SupportTools/BinarySearch.pdf 只是存储 /SupportTools/BinarySearch.pdf 我这样说是因为您将来可能会更换机器,或者您目前正在开发中,并且 192.167.90.2 可能会更改为生产中的其他内容。
  • 是的,这是有道理的——我已经改变了你提到的文件路径。非常感谢你,我真的很感激!
猜你喜欢
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 2011-11-07
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
相关资源
最近更新 更多