6

API統合を開発しました。これには、複数の画像/ファイルのアップロードが含まれています。複数のユーザーが同じ名前のファイルをアップロードすると、名前の競合が発生します。

この問題を修正するために、ランダムな名前で動的フォルダーを作成することを計画しました(一時フォルダーとして、プロセスが完了すると削除されます)。PHPでランダムフォルダを生成するために利用できる方法/手法はありますか?

4

3 に答える 3

13

このような場合、php関数uniqidが便利であることがわかりました。基本的に、次のようなものです。

$dirname = uniqid();
mkdir($dirname);

次に、アップロードしたファイルをこのディレクトリに移動します。

編集:言及するのを忘れました、ディレクトリ名はランダムではありませんが、あなたが必要としているように見える一意であることが保証されています。

于 2013-01-12T05:06:42.047 に答える
4

ランダムなフォルダを作成して(成功したかどうかを確認して)成功するまで試行する関数が最適だと思います。

これには競合状態がなく、tempdirで名前としてまだ使用されていない名前を提供するuniqid()への信頼に依存していません。

function tempdir() {
    $name = uniqid();
    $dir = sys_get_temp_dir() . '/' . $name;
    if(!file_exists($dir)) {
        if(mkdir($dir) === true) {
            return $dir;
        }
    }
    return tempdir();
}
于 2015-05-16T17:57:43.947 に答える
0

はい、mkdir()例を使用して可能です

<?php
mkdir("/path/to/my/dir", 0700);
?>

詳細については、これを確認してください

http://php.net/manual/en/function.mkdir.php

于 2013-01-12T05:07:06.697 に答える