1

画像を保存するために、次の簡単なコードを書きます。

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

同じ名前の画像を書き換えない方法が必要です。したがって、特定の名前の画像が /images/ フォルダーに既に存在する場合は、何もしないでください。それは簡単ですが、私はそれを行う方法がわかりません。

4

3 に答える 3

4

確かに、を使用してfile_existsください。

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

これは本質的に競合状態をプログラムに導入することに注意することが重要です。別のプロセスがファイルの存在を確認してからファイルに書き込む時間内にファイルを作成する可能性があるためです。この場合、新しく作成されたファイルを上書きします。ただし、可能性は非常に低いですが、可能です。

于 2012-04-24T12:47:24.570 に答える
2

ニックブに加えて。is_file は file_exists よりも優れており、file_exists はディレクトリとファイルに対して true を返します。

したがって、次のようになります。

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

PS: ご参考までに、関数 is_dir もあります。

于 2012-04-24T12:50:02.197 に答える
0

http://php.net/manual/en/function.file-exists.php

于 2012-04-24T12:47:27.723 に答える