2010-12-06 8 views

答えて

25

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

+0

よかった、ちょうど私が探していたもの。 – Adamski

4

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

+0

良いアイデアは、microtime()が単一のユーザーの場合に優れています。 – Melsi

1

$ユーザ名。$タイムスタンプ。$乱数

またはあなたはそれがアップロードされたときの詳細を知っている人々をしたくない場合は、これをハッシュした場合に誰によって

2

tempnamtmpfileあります可能性がありファイルを作成するか、this questionです。

6

この機能は役立つことがあります。

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

+1

ハッシュをファイル名として使用する場合の衝突に注意してください。ランダムな文字列で塩漬けされたハッシュを使います。 – luxcem

1

のような何か:

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

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

あなたには、また、ファイルの内容のハッシュを使用してに探して検討すること

Sh ouldはうまく動作します。

+8

ハッシュは一意ではありません。 – afilina

+0

@afilinaなぜハッシュがユニークではないのですか? –

+0

MD5やハッシュ関数と衝突する可能性はありますが、ほとんどのユースケースではそうは考えられません。私の元の応答は2010年からです。sha256を使用すると、衝突の可能性は非常に低くなります。https://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-posibility-of-sha-collisions -実際には – systematical

関連する問題