在网络服务器上存储图像有哪些想法。我正在与应用程序的 PHP 和 MySQL 进行交互。
问题 1
我们是否将物理文件的名称更改为 a000000001.jpg
并将其存储在基本目录中,还是保留用户的非托管文件名,即“Justin Beiber Found dead.jpg”?例如
wwroot/imgdir/a0000001.jpg
以及数据库中的所有元数据,例如FileName
和ReadableName
、Size
、Location
等。
我需要制作一个自定义文件管理器,然后权衡如何存储图像的底层结构的一些优缺点。
问题 2
如果我的应用程序/数据库未将其设置为发布/公开,我如何确保图像不被下载?
在我的应用程序中,我可以发布图像,或保护它们不被下载,如果我将图像存储在数据库表中,我可以将其存储为 BLOB 并使用 php 阻止用户下载它。如果图像存储在文件系统中,我希望能够对图像执行相同的操作,但我不确定这对于系统中的 PHP 和文件是否可行。
最佳答案
保留相关的文件名有利于 SEO,但您还必须确保不重复。
在所有情况下,我都会将文件重命名为小写并用下划线(或连字符)替换空格
贾斯汀·比伯被发现死亡
=> justin_beiber_finally_dead.jpg
如果照片属于文章或特定内容,您可以将文章 ID 添加到图像中,即 123_justin_beiber_found_dead.jpg
。或者,您可以将图像存储在文章特定的文件夹中,即 /images/123/justin_beiber_found_dead.jpg
。
将文件命名为 a0000001
会删除与文件的所有相关性,并且不会增加任何值(value)。
仅在数据库中存储(完整)文件路径。
第 2 部分;
我不确定这里最好的解决方案是什么,但是使用文件系统,我认为您必须配置 apache 以通过 PHP 为特定目录中的所有文件提供服务。在 PHP 中,您可以检查文件是否可以发布,然后将其吐出。如果没有,您可以提供一个虚拟图像。然而,这不是很有效,并且在 apache 上会更重。
关于php - 在 MySQL 中存储图像/数据和命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551763/