如何在MYSQL中存储PDF文件的文件引用,以便在php中检索

如何在MYSQL中存储PDF文件的文件引用,以便在php中检索,php,mysql,pdf,download,uploading,Php,Mysql,Pdf,Download,Uploading,我试图在MySQL中存储对PDF文件的引用,然后我想将一些文件加载到网页上。当我单击文件名时,我希望加载该文件。如何将引用存储在MySQL中并通过PHP访问它 我读过很多帖子,建议不要直接将文件添加到MySQL,只存储引用,但我找不到教程或说明来指导如何在MySQL中只存储文件的引用/路径,并通过PHP访问 <?php $file = 'BinarySearch.pdf'; $filename = 'BinarySearch.pdf'; header('Co

我试图在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);
?>

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

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

你有两个选择-

使用类似AmazonS3的云提供商将pdf文件推送到一个bucket,该bucket返回一个引用该文件的URL。然后将该URL作为引用存储到表中,因为API将返回上传文件的链接。当您需要在请求时呈现文件时,只需通过数据库中的引用定位文件,并像当前一样呈现它。这将需要更多的工作,因为您需要设置云提供商帐户、提供一个bucket(存储)并将SDK添加到项目中以与存储引擎通信

另一种方法是在Web主机中指定一个可通过站点url访问的文件夹。例如—

文件(9d6fdb34-f92f-4078-9ab3-e5ada4522f2e.pdf)物理存储在您的云主机本地文件夹中,该文件夹可以是类似/var/files的任何位置,但当用户输入时,您的Web服务器指向此目录,对该文件的引用可以与其他元数据一起存储在MySQL中,例如:

file_guid :  9d6fdb34-f92f-4078-9ab3-e5ada4522f2e
file_name : BinarySearch
file_extension: pdf
user_id : 123 (if applicable)
在用户界面中,用户可以看到(BinarySearch.pdf)文本,该文本链接到

当您将文件存储到/var/files/中时,如果您的用户正在上载文件,请始终将文件名重写为唯一的uuid,但将他们上载的文件名存储在您的数据库中,如上文所述

我希望这有帮助


祝你好运。

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

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

你有两个选择-

使用类似AmazonS3的云提供商将pdf文件推送到一个bucket,该bucket返回一个引用该文件的URL。然后将该URL作为引用存储到表中,因为API将返回上传文件的链接。当您需要在请求时呈现文件时,只需通过数据库中的引用定位文件,并像当前一样呈现它。这将需要更多的工作,因为您需要设置云提供商帐户、提供一个bucket(存储)并将SDK添加到项目中以与存储引擎通信

另一种方法是在Web主机中指定一个可通过站点url访问的文件夹。例如—

文件(9d6fdb34-f92f-4078-9ab3-e5ada4522f2e.pdf)物理存储在您的云主机本地文件夹中,该文件夹可以是类似/var/files的任何位置,但当用户输入时,您的Web服务器指向此目录,对该文件的引用可以与其他元数据一起存储在MySQL中,例如:

file_guid :  9d6fdb34-f92f-4078-9ab3-e5ada4522f2e
file_name : BinarySearch
file_extension: pdf
user_id : 123 (if applicable)
在用户界面中,用户可以看到(BinarySearch.pdf)文本,该文本链接到

当您将文件存储到/var/files/中时,如果您的用户正在上载文件,请始终将文件名重写为唯一的uuid,但将他们上载的文件名存储在您的数据库中,如上文所述

我希望这有帮助


祝你好运。

你的代码与你的问题无关。如果您将文件路径存储在DB列中,请向我们展示该代码。您好,感谢您的查看!问题是我在网上尝试了很多不同的比特,现在我没有任何代码可以显示。我只知道我想要实现什么,并且真的在为如何实现而挣扎。例如,如何存储文件引用,然后如何检索它-我在网上找不到任何地方如何做到这一点!文件引用只是指向文件的路径。您可以将其作为任何其他文本字符串存储在DB中。请参阅本关于PHP中PDO的教程:您的代码与您的问题无关。如果您将文件路径存储在DB列中,请向我们展示该代码。您好,感谢您的查看!问题是我在网上尝试了很多不同的比特,现在我没有任何代码可以显示。我只知道我想要实现什么,并且真的在为如何实现而挣扎。例如,如何存储文件引用,然后如何检索它-我在网上找不到任何地方如何做到这一点!文件引用只是指向文件的路径。您可以将其作为任何其他文本字符串存储在DB中。请参阅这篇关于PHP中PDO的教程:我真的很抱歉这个问题不清楚-我对编程非常陌生,因此我的语言不清楚。但是非常感谢你的回复,所以我使用了你提到的第二种方法,并且成功了!!它正是我需要它做的!我将文件路径存储在mysql中,然后使用SQL查询检索文件路径并创建一个可单击的链接来查看PDF文件!!巨大的帮助,非常感谢你-真的从早上7点就开始尝试了@太棒了!很高兴听到它对你有用。我还对您快速掌握和实施解决方案的能力印象深刻,尽管您是编程新手。干得好。一个小细节,我强烈建议您不要在mysql中存储完整的文件链接。不是192.167.90.2/SupportTools/BinarySearch.pdf,而是store/SupportTools/BinarySearch.pdf,我这样说是因为您可能会在将来更改机器,或者您目前正在开发中,192.167.90.2可能会在生产中更改为其他内容。是的,这是有意义的-我已经更改了您提到的文件路径。非常感谢你,我真的很感激!我真的很抱歉这个问题不清楚-我对编程真的很陌生,因此我的话不清楚。但是非常感谢你的r