避免重写已存在的文件

时间:2012-04-24 12:45:32

标签: php

我写这个简单的代码来保存图像:

// $randomimage contains a random image url.
$content = file_get_contents($randomimage);
file_put_contents('images/'.$randomimage, $content);

我需要一种不重写具有相同名称的图像的方法。因此,如果我的/ images /文件夹中已存在具有特定名称的图像,则不要执行任何操作。 这很简单,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:4)

当然,请使用file_exists

$path = 'images/'.$randomimage;
if( !file_exists( $path)) {
    // Note, see below
    file_put_contents( $path, $content);
}

重要的是要注意,这本身会在您的程序中引入竞争条件,因为有可能另一个进程可以在您检查文件存在时创建文件,然后写入文件。在这种情况下,您将覆盖新创建的文件。但是,这种可能性很小,但可能。

答案 1 :(得分:2)

除了nickb。 is_file优于file_exists,file_exists将在目录AND文件上返回true。

所以它会是:

if( !is_file ( 'images/'.$randomimage)) {
    file_put_contents('images/'.$randomimage, $content);
}

PS:还有一个函数is_dir,如果你想知道的话。

答案 2 :(得分:0)