gpt4 book ai didi

php - 在网站上上传和存储图片的最佳方式是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:40:06 25 4
gpt4 key购买 nike

我不知道大型网站如何将图片保存在其服务器上。谁能告诉我他们如何将用户上传的图片保存在他们的数据库中?

我在想,也许他们只是将文件(图片)保存在某个路径中,然后将该路径保存在数据库中,对吗?

但我想这样做。这是正确的吗?例如,名为 www.photos.com 的网站。当用户上传图片时,我会创建一个用户名文件夹并将这些图片保存在该文件夹中。

我相信我们可以使用 php 文件概念 创建一个目录。所以当一个新用户上传他的图片或文件时,我想用他的名字创建一个目录。

示例:如果用户名为 john,我会在 photos.com www.photos.com/john/ 上创建一个这样的目录,然后在他上传照片时将他所有的照片保存到该目录中图片。这是正确的做法吗?

我这里没有人知道如何将文件保存到服务器,所以请告诉我如何做到这一点?我想以正确且安全的方式进行操作。

最佳答案

所有大型网站不将图片保存到数据库他们将它们存储在磁盘中。它们在表格中保存对图片位置的引用。然后从那里链接。

为什么?性能。

从数据库中提取大量内容是一个巨大的性能瓶颈。并且数据库不能很好地横向扩展,所以这意味着一个更大的问题。所有大型网站都使用静态内容农场来处理图像等静态内容。那些不会关心你的身份的服务器。

您可能会问,他们如何将图片真正保密?他们没有。

图片的链接本身就是地址和密码。让我们以 Facebook 为例。如果我在我的帐户中存储私有(private)图片,您应该无法打开它。但是,只要你有正确的地址就可以。

This picture is private . 注意文件名
10400121_87110566301_7482172_n.jpg
(facebook 会不时更改 url,因此链接可能会损坏)

它是非连续的。获取图片的唯一方法是知道它的地址。
根据之前的用户照片,您无法猜测下一张。
它有一个巨大的熵,所以即使你开始随机猜测,你也会有大量的失败,如果你得到一张照片,你将无法从那里认识到所有者的身份,本身就是匿名保护。

编辑(为什么不应该将图像存储在“用户名”文件夹中:
编辑后很明显,您确实打算将文件放在磁盘上而不是数据库上。此编辑涵盖了新场景。

即使您的逻辑(为每个用户创建一个文件夹)接缝更有条理,但当您开始拥有许多用户和许多图片时,它也会产生问题。假设您的服务器有 1T 磁盘空间。我们还可以想象一下,1T 在服务器可以处理的负载方面或多或少是准确的。

现在您有 11 个用户,假设他们同时开始上传,并且每个用户将上传超过 100GB 的文件。当每个服务器达到 91GB 时,服务器已满,您必须开始将图像存储在不同的服务器上。如果遵循该用户/文件夹结构,您将必须选择其中一个用户并将他的所有数据迁移到不同的服务器。此外,它对不能上传超过 1T 文件的用户进行了硬限制。

我应该将所有文件存储在同一个文件夹中吗?
不,大型站点通常将文件存储在顺序文件夹(/000001/、/000002/等)中,每个文件夹具有 x 定义的文件数。这主要是针对文件系统性能问题。

更多关于 how many files in a directory is too many?

关于php - 在网站上上传和存储图片的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com