概要
Laravelで一意なパスになるファイルを作成したかったのですが、特にメソッドが用意されているようではなかったのでそのメモ書きになります。
他の言語でも応用が効く方法になってると思います。
背景
phpの関数にtempnamという関数が用意されていましたが、ファイルのフルパスを返すようで、今回は相対パスもしくはファイル名が欲しかったため代わりにuniqidという関数を使うことにしました。
しかしuniqid関数では、一意なファイルパスを作成出来ることが担保出来ないようだったので、次の関数を用意しました。
方法
sample.php
function getUniquePath():string
{
// 適当なprefix付きのパスを作成
$path = uniqid('some-dir/some-prefix_');
// 作成予定のディレクトリ先に同一ファイルパスがないことを確認
if(Storage::disk('local')->missing($path)){
return $path;
}
return $this->getUniquePath();
}
非常に簡易的ですが上記のような関数を用意することで、一意なパスのファイル名を得ることが出来るかと思います。