gpt4 book ai didi

php - 使用文件系统的图像库,描述存储在数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:07 25 4
gpt4 key购买 nike

好的,所以我正在尝试为客户创建一个画廊,并希望它能够很容易地为他们更新。我有上传和工作,让他们上传图像并将其存储在名为“img”的文件夹中。此外,当他们上传图片时,他们必须输入我当前存储在数据库表中的图片的标题和描述。

数据库是这样组织的:

ID(AI)  |  Name  |  Description  |  Image  |  Date(timestamp)

图像字段是图像名称和扩展名,例如:

$image = $_FILES["file"]["name"];  

并保存在数据库中。

如果那部分是不必要的或多余的,我可以将其删除我只是认为这会让事情变得更容易?

所以现在我正在尝试从文件夹中检索图像并显示每个图像的适当名称和描述。执行此操作的最佳方法是什么?

现在我使用以下方法显示所有图片:

$dirname = "img/";
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<img src="'.$image.'" width="200" height="200"/><br />';
}

我一直在谷歌和这里搜索,但似乎找不到任何东西。任何帮助将不胜感激,谢谢 :)

最佳答案

最佳做法是将您自己的文件名分配给实际的磁盘文件,例如使用数据库中的记录 ID,因此您最终得到 1.jpg2,jpg 等...。这可以防止许多问题,例如文件名冲突、恶意包含路径信息的文件名、带有“顽皮”字样的文件名等...任何绕过您的图库系统直接访问图像文件的人都只会看到“1.jpg”,而看不到上传时使用的“really_nasty_swear_words.jpg”原来。

另一方面,当需要实际提供这些图像时,您始终可以使用简单的 PHP 脚本作为中介,然后在其中包含原始文件名。例如

http://example.com/image.php?id=42

<?php
if (user_can_access_image($_GET['id'])) {
$filename = get_name_from_db($_GET['id']);
header("Content-disposition: attachment; filename=$filename");
readfile("/path/to/images/$_GET[id].jpg");
} else {
readfile("/path/to/unauthorized.jpg");
}

请注意,此代码并非完全安全,仅用作示例。

关于php - 使用文件系统的图像库,描述存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906330/

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