首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP文件重命名

问PHP文件重命名
EN

Stack Overflow用户
提问于 2010-09-03 12:45:02
回答 4查看 1.9K关注 0票数 8

我有一个表单,管理员将上传三张不同尺寸的图片到三个不同的指定目录。现在,为了确保不涉及重复文件名的问题,我实现了类似php的东西,它将比较上传的文件名,它将检查指定目录中是否存在该文件名,如果是,它将回显一个错误并停止脚本执行。

现在,我的一位朋友建议我,要求管理员手动重命名图片文件,并要求他们处理文件复制问题,这是非常糟糕的。他建议的解决方案是自动重命名文件,然后将其存储在数据库中,然后将其定向到目录中。

我不知道该如何组合重命名的文件,并确保它将保持唯一的文件名,更准确地说,我希望您了解我的目录结构。

就像我说的,管理员将上传三个图片文件。

( a)标题图片b)简图c)详细图片

所有这三个图片文件都将被移动到不同的目录中,比如标题图片转到标题目录等等。

我现在使用下面的脚本来移动和存储文件名和路径,在数据库中使用varchar。

代码语言:javascript
复制
$ns_pic_title_loc= $_FILES["ns_pic_title"]["tmp_name"];
$ns_pic_title_name = $_FILES["ns_pic_title"]["name"];
move_uploaded_file($ns_pic_title_loc, $ns_title_target.$ns_pic_title_name) or die(mysql_error());

这就是我没有使用的示例代码,它包含了我正在使用的验证函数。我在想我想重命名所有的文件

( a)在标题目录中,应将文件存储为。title_1.jpg title_2.jpg title_3.jpg title_4.jpg

诸若此类

和其他照片的方式一样。我该怎么做?我用什么功能来实现我的目标。如果这不是重命名文件的好方法,我将非常感谢任何建议来重命名该文件。

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-03 12:57:01

好吧,这里有一个可能的解决方案:

  1. 从$_FILES["ns_pic_title"]["name"]上传文件名和单独的扩展名,或者如果我们只讨论图像文件,用getimagesize($_FILES["ns_pic_title"]["tmp_name"])获取图像类型;
  2. 检查数据库中图像记录的最大id,并使$file_name变量'title_'.($max_id + 1)
  3. 此时,您应该有$file_name和$file_extension,move_uploaded_file($_FILES["ns_pic_title"]["tmp_name"], $ns_title_target.$file_name.'.'.$file_extension)也有

希望这是有意义的,也是有帮助的。

票数 2
EN

Stack Overflow用户

发布于 2010-09-03 12:54:12

有几个好的选择有不同的利弊。

票数 2
EN

Stack Overflow用户

发布于 2010-09-03 12:56:40

与其用逻辑计算出最新的图片名称并计算下一个数字增量,不如直接使用PHP的tempnam()函数?它生成一个具有您选择的前缀的唯一名称(即“标题”、“简要”、“详细信息”)。您也可以简单地在文件名上加上时间戳--如果没有大量管理员同时上传图片,那么应该可以处理大多数名称冲突。

由于您的图片将被排序到title、brief和detail目录中,所以没有必要将每个图片命名为title_*、brief_*和detail_*,对吗?如果它在标题目录中,那么它显然是一个标题图片。

另外,您将把文件名放在数据库中。然后在应用程序的其他地方,当您想要显示图片时,我假设您从数据库中获得了正确的文件名。因此,只要应用程序知道在哪里找到它,实际文件名就不重要了。如果这是正确的,那么就没有必要有一个非常友好的名称,因此,使用tempnam()文件名或时间戳加上原始文件名是可以接受的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3635831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档