34

エントリの重複を避けるために、ファイルアップロード用に一意のファイル名を生成するためのベストプラクティスを提案できる人はいますか?

前もって感謝します。

4

6 に答える 6

35

私は通常、ファイル名にuniqid()関数を使用してUIDを作成するか、ファイルをアップロードするユーザー名の名前でフォルダーを作成し、元のファイル名を残します。最初のものの欠点は、ユーザーに表示するために元のファイル名をどこかに保存する必要があることです。

于 2010-12-06T23:20:57.270 に答える
10

この関数は次の場合に役立ちます。

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

次のようなファイルの内容のハッシュを使用することを検討することもできます。

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

于 2010-12-06T23:23:54.907 に答える
7

ファイルがアップロードされたときのUNIXタイムスタンプを使用できます。複数のアップロードが同時に発生することが予想される場合は、一意のユーザーIDまたは元のファイル名の一部を追加できます。

于 2010-12-06T23:19:49.743 に答える
7

このようなもの:

$filename = md5(date('Y-m-d H:i:s:u'));

MD5ハッシュは一意であることが保証されていないため、file_exists($ filename)を使用して衝突をチェックすることをお勧めします。その場合は、上記を再実行してください。

于 2010-12-06T23:31:29.120 に答える
3

ファイルを作成したい場合は、と、またはtempnamこの質問があります。tmpfile

于 2010-12-06T23:21:13.080 に答える
1

$username。$timestamp。$randomNumber

または、アップロードされた日時と誰がアップロードしたかについての詳細を他の人に知られたくない場合は、これをハッシュすることができます

于 2010-12-06T23:21:00.510 に答える