Php 如何在站点后端存储图像文件

Php 如何在站点后端存储图像文件,php,mysql,sql,web,phpmyadmin,Php,Mysql,Sql,Web,Phpmyadmin,我正在建立一个网站,刚刚开始开发后端 我的网站的重点是向访问者显示图像。出于开发目的,我想在上线之前先测试所有内容 我想知道存储这些图像的最佳方式是什么。我刚刚完成了Wamp服务器的设置,并使用phpMyAdmin添加了一个新的数据库。我发现我可以将每个图像作为BLOB数据类型直接存储在mySQL数据库中。但这是最好的方式吗 谢谢大家! 将文件存储到数据库中有两个主要优点: 交易安全。如果用户编辑其个人资料(pic和出生日期),则在发生回滚/错误的情况下,二者要么都保存,要么都不保存 只有一个备

我正在建立一个网站,刚刚开始开发后端

我的网站的重点是向访问者显示图像。出于开发目的,我想在上线之前先测试所有内容

我想知道存储这些图像的最佳方式是什么。我刚刚完成了Wamp服务器的设置,并使用phpMyAdmin添加了一个新的数据库。我发现我可以将每个图像作为BLOB数据类型直接存储在mySQL数据库中。但这是最好的方式吗


谢谢大家!

将文件存储到数据库中有两个主要优点:

  • 交易安全。如果用户编辑其个人资料(pic和出生日期),则在发生回滚/错误的情况下,二者要么都保存,要么都不保存

  • 只有一个备用点。您不会忘记备份包含用户化身的目录

  • 但是,由于存在许多缺陷,我不推荐使用它,尤其是不要使用PHP和MySQL。MySQL不支持流式传输,所以如果文件很大,您将耗尽所有ram

    文件系统无疑是最快、最自然的方式。它的开销最小,对资源的需求最少

    阅读:


    您可以将它们存储在DB中,然后轻松地处理图像。例如,您可以从数据库中获取原始图像,创建几个大小不同的缓存图像(在磁盘上)(使用imagick),并在网站中显示它们。如果您使用DB,则在拍摄图像时应使用延迟加载(仅在需要时加载内容),否则mysql将使您的服务器崩溃。:)

    您可以创建dir/cache/pictures/$id\u$width\u$height.jpg,并将它们存储在那里。
    并仅在未找到$id_$width_$height时创建新图像

    这肯定不是一条路要走。然后,在将blob发送到浏览器之前,需要将其保存在PHP内存中


    更好的方法是将图像作为文件存储在文件系统中,而只将文件名存储在数据库中。这样,您就可以将整个图像服务卸载到web服务器上,而不会让PHP参与文件的HTTP请求。

    我个人不建议将文件存储在数据库中。我会存储对文件位置的引用,以便将来必要时可以通过镜像等进行缩放