web-dev-qa-db-ja.com

ファイルをアップロードするときに一意のファイル名を生成する最良の方法PHP

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

前もって感謝します。

25
Adamski

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

29
ryudice

この機能は次の場合に役立ちます。

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

また、次のようなファイルコンテンツのハッシュを使用することを検討することもできます。

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

6
Kevin Stock

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

5
Colin O'Dell

このようなもの:

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

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

5
cnizzardini

ファイルを作成する場合はtempnamtmpfileがあります。または この質問 です。

3
EboMike

$ username。$ timestamp。$ randomNumber

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

1
Freddie