【问题标题】:Not using if(file_exists) bad practice?不使用 if(file_exists) 不好的做法?
【发布时间】:2013-07-24 11:55:57
【问题描述】:

我正在处理多个文件的上传脚本。最初,我检查文件是否存在,如果存在,则为其附加唯一 ID,然后上传。

从那以后,我一直在考虑选项,并决定我希望上传的每个文件都具有原始文件名和唯一的 ID。

然后提出了不需要if(file_exists) 检查的问题,所以我的问题首先是unique() 的可靠性如何,我现在所做的是否被认为是不好的做法?

谢谢。

//if(file_exists($newPath)){

        $name = pathinfo($fileName, PATHINFO_FILENAME);
        $fileName = $name . '__' .uniqid().  '.' .$fileExt;
        $newPath = $upload_dir .$newName;
//  }

【问题讨论】:

  • 我总是会检查现有文件是否存在,并确保在代码中目标目录是可写的。

标签: php html file-upload web


【解决方案1】:

我没有使用唯一的,但手册指出它基于当前时间(以微秒为单位)。假设没有人在不同的来源以完全相同的微秒创建文件,这可能是可靠的。

也就是说,对于 uniqid(),我会使用前缀参数(如果您将其部署在多个地方)- 很有可能您会没事的。

但是,我仍然会进行 file_exists 检查。性能影响将完全不明显。我什至会这样回答您的问题:是的,在使用该名称之前不检查文件是否存在是一种不好的做法 - 特别是当您写入具有大量动态创建的目录时文件。以我的经验,你想抓住一切可能弄乱你的应用程序的事情——这是一件大事。有什么办法可以防止某人在某个时候将一个随机文件扔到那里,而该文件恰好与即将成为 uniqid() 的文件同名?如果答案是“无”,那么您绝对应该进行检查。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多