【问题标题】:Trying to rename a file when uploading and it wont work上传时尝试重命名文件,但它不起作用
【发布时间】:2012-07-20 05:31:04
【问题描述】:

嘿,我正在尝试更改上传时的文件名(如果存在),但似乎我有问题。这是代码..

$tempfilename = $filename["name"]; 
while(file_exists($location . $tempfilename))
{
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 
    $shuffled = str_shuffle($chars);
    $stringa = substr($shuffled,0,7);
    move_uploaded_file($filename["tmp_name"], $location . $filename["name"]);
    $tempfilename = $stringA.$filename["name"];
}
move_uploaded_file($filename["tmp_name"], $location.$stringa.$filename["name"]);
clearstatcache();

这似乎不起作用,并且

不知道我错过了什么。

【问题讨论】:

  • 你不应该在file_exists($location . $tempfilename)之前打电话给clearstatcache()吗?
  • 我刚试过好像没用。
  • 为什么我在循环中看到move_uploaded_file,在字符串之外?

标签: php file upload renaming


【解决方案1】:

PHP 变量名区分大小写。

$stringA !== $stringa

但是,您是否考虑过只使用计数器,而不是所有乱七八糟的字符串等?

$tempfilename = $filename["name"];
for ($i = 0; file_exists($location . $tempfilename); $i++) {
    $tempfilename = $i . $filename["name"];
}
move_uploaded_file($filename["tmp_name"], $location . $tempfilename);

【讨论】:

  • $stringA !== $stringa 发生了一些事情,当我写消息时它不在我的代码中,关于使用计数器..这有关系吗?我的意思是最终结果是一样的——我得到不同的名字。它仍然不会上传它
  • 如果它没有上传,问题是你上传的PHP设置,你在这里做的是移动文件并重命名它。
  • 100% 上传它,我已经尝试了几次它的工作原理.. 现在有了 dave random 的回答,它也更改了名称,但它确实保存了一些旧名称..就像它是 0file.jpg 下一次运行它变成 10file.jpg 和下一次它的 210.jpg :-)
  • @YanivKossas 我稍微修改了我的答案,所以它会变成file.jpg0file.jpg1file.jpg2file.jpg... - 但你是说你想删除@ 987654328@ 部分完全?
  • 啊..我明白为什么它会不断上升,每次运行文件都会增加一个数字..它不会增加数字..
猜你喜欢
  • 2019-05-08
  • 1970-01-01
  • 2020-11-21
  • 2020-09-07
  • 2015-11-18
  • 2019-09-30
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
相关资源
最近更新 更多