エントリの重複を避けるために、ファイルアップロード用に一意のファイル名を生成するベストプラクティスを提案できますか?
前もって感謝します。
私は通常、ファイル名にuniqid()関数を使用してUIDを作成するか、ファイルをアップロードするユーザー名のフォルダーを作成し、元のファイル名のままにします。最初の方法の欠点は、ユーザーに表示するために元のファイル名を保存する必要があることです。
この機能は次の場合に役立ちます。
http://php.net/manual/en/function.uniqid.php
また、次のようなファイルコンテンツのハッシュを使用することを検討することもできます。
ファイルがアップロードされたときのUNIXタイムスタンプを使用できます。複数のアップロードが同時に発生すると予想される場合は、一意のユーザーIDまたは元のファイル名の一部を追加できます。
このようなもの:
$filename = md5(date('Y-m-d H:i:s:u'));
MD5ハッシュは一意であることが保証されていないため、file_exists($ filename)を使用して衝突をチェックすることをお勧めします。その場合は、上記を再実行してください。
ファイルを作成する場合はtempnam
とtmpfile
があります。または この質問 です。
$ username。$ timestamp。$ randomNumber
または、いつ、誰がアップロードしたかについての詳細を人々に知らせたくない場合、これをハッシュすることができます