php - 如何在php中命名上传的文件以防止它们被覆盖?

标签 php mysql upload

我正在尝试将用户提交的文章添加到我的网站(仅供管理员使用)。每篇文章都有一个选项,最多可以上传 3 张图片。我的数据库是这样设置的

文章

id
user_id
title
body
date_added
last_edited

照片

id (auto_increment)
article_id

首先我将文章保存在数据库中,然后我上传照片(临时),然后我在数据库中创建一个新的照片记录保存 article_id。然后我将上传的照片重命名为与照片记录的主键相同,并为png。

$filename = $photo->id . '.png';

我认为这是防止文件被覆盖的好方法。这对我来说似乎有缺陷。关于如何保存我的记录和照片有什么建议吗?

谢谢

最佳答案

只使用数据库主键来命名文件并没有什么错。

我看到的唯一真正的缺点是你最终得到了相当无用的文件名。有人可能会提示更具描述性的名称有助于搜索引擎排名等。

正如另一个答案所指出的,将文件重命名为以 .png 结尾不会使其成为 png。如果您想实际转换图像格式,您可能想看看 PHP 的内置 GD 库(或查找 ImageMagick)。

关于php - 如何在php中命名上传的文件以防止它们被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707045/

相关文章:

javascript - 从浏览器上传视频到 youtube

java - 将文件从基于 Web 的应用程序上传到 Linux 服务器

php - 异常 : Cannot redeclare function in web. php,但它是此函数的唯一出现

php - 如何计算每个月的周数和星期几

php - 我尝试将其转换为与 Laravel 的 DB 类一起使用,但它没有返回任何内容

mysql - 如何将 Access 子窗体的显示限制为 10?

mysql - MySQL中合并多个表进行查看

laravel - 如何使用 Laravel 4 上传视频?

php - CakePHP - 使用 php 变量加载 View 并在 ajax 中返回

php - 这个正则表达式是正确的,但在本地主机中不起作用