php - 在 MySQL 中存储图像/数据和命名约定

标签 php mysql database image security

在网络服务器上存储图像有哪些想法。我正在与应用程序的 PHP 和 MySQL 进行交互。

问题 1

我们是否将物理文件的名称更改为 a000000001.jpg 并将其存储在基本目录中,还是保留用户的非托管文件名,即“Justin Beiber Found dead.jpg”?例如

wwroot/imgdir/a0000001.jpg

以及数据库中的所有元数据,例如FileNameReadableNameSizeLocation等。 我需要制作一个自定义文件管理器,然后权衡如何存储图像的底层结构的一些优缺点。

问题 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/

相关文章:

php - 如何创建一个查询来获取使用 where 子句作为结果数组索引的结果?

asp.net - 有人还在使用 Access 进行 Web 开发吗?

database - "Web Development with Clojure": No such var: db/get-user

数据库分区 - 水平与垂直 - 规范化和行拆分之间的区别?

php while循环只显示跨多个表的mysql查询的一个结果

php - 使用单独的 jquery 文件重定向到另一个页面

php - 将 Microsoft Access 数据库与 Silverstripe 网站数据库同步

C# 命令执行期间遇到 fatal error

javascript - 使用 jQuery 将数据库中的值显示到表中动态创建的文本字段

php - MySQL 数据库页面上的 URL 标题调用