5

我们正在尝试为壁纸创建一个站点,以便以某种方式存储大文件(2mb-5mb),因此我们需要将图像存储在磁盘空间而不是数据库中,并且只存储数据库的路径。所以如果你能给出一些关于如何做到这一点的想法(我们现在知道的方法是创建一个带有上传功能的 PHP 脚本,并通过从 PC 中手动选择要上传的图像),除非你们有其他建议。教程将不胜感激。非常感谢!

这是为管理员添加图像而不是为用户添加的图像。注意:我们还没有开发任何脚本,所以这是为了从你们那里获得一些关于我们可以使用它的想法,如果没有人猜我们将使用 php 脚本。

4

2 回答 2

6

对于每个上传的文件,生成一个 UUID 并将其用作磁盘上的文件名。这样可以避免冲突、清理文件名和路径遍历漏洞。

您将有一个像这样的表:(id, description, filename)具有像(1, "Green field", "0D729DCD-5116-4480-81CE-90A0380B557A.png").

接下来,您要避免一个文件夹中有太多文件的问题——您将遇到许多 FS 的文件系统限制。

要解决此问题,请根据文件名的前几个字母创建目录。因为0D729DCD-5116-4480-81CE-90A0380B557A.png,您会将其存储在/0/D/7/0D729DCD-5116-4480-81CE-90A0380B557A.png.

于 2013-09-30T18:56:52.133 回答
6

你的表格,

<form action="PHP_FILE_PATH.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" name="submit" value="Upload" />
</form>

PHP 部分

<?php
if($_FILES['image']['name'])
{
  $save_path="FOLDER_PATH_TO_SAVE_UPLOADED_IMAGE"; // Folder where you wanna move the file.
  $myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here
  move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder
}

$inser_into_db="INSERT INTO `database`.`table` (`folder_name`, `file_name`) VALUES('$save_path', '$myname'))";

?>
于 2013-09-30T19:03:54.890 回答