0

データベースに重複するファイル名があるかどうかを確認したいアップロード機能があります。ある場合は、アップロードする写真が引き続きアップロードされるように、jpgの名前を変更したいと思います。

これが私が思いついたコードの行です:

$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled); 
$shuffled = $shuffled.".jpg";
rename($this->filename,$shuffled);

ここでシャッフル関数を使用して、ランダムな新しいファイル名を指定しています。preg_replaceなどの他の手順を使用してみましたが、jpgファイル自体が破損しています。何か案は?

4

4 に答える 4

1

あなたのコードは次のとおりです。

$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled); 
$shuffled = $shuffle.".jpg";
rename($this->filename,$shuffled);

3 行目は $shuffled = $shuffled.".jpg"; のように見えます。

于 2012-08-09T17:48:22.183 に答える
0

ランダムなファイル名を使用する場合は、microtime() を使用してランダムな文字列を生成します。より良い解決策は次のとおりです。

if(is_file($filename))
{
$filenameSplit = explode('.', $filename);
$i = 1;
while(is_file($filenameSplit[0] . "($i)." . $filenameSplit[1]))
{
$i++;
}
$newFilename = $filenameSplit[0] . "($i)." . $filenameSplit[1];
rename($filename, $newFilename);
}
于 2012-08-09T17:45:22.823 に答える
0

これを使って:

copy($oldfilename,rand(10000000000,99999999999).".jpeg");
unlink($oldfilename);

ファイル名 (拡張子なし) は、10000000000 より大きく、99999999999 より小さい数字になります。

于 2012-08-09T17:21:19.013 に答える
0

新しいファイル名の拡張子はどこですか???

rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
于 2012-08-09T17:21:31.173 に答える