2010-12-14 11 views
1

基本的に私はユーザーがファイルのアップロードに使用するシンプルなフォームを持っています。ファイルは、/ files /ディレクトリにいくつかのサブディレクトリとともに格納し、ファイルをほぼ均等に分割する必要があります。例えば/files/sub1/sub2/file1.txtdbなしでファイルを構造化する

また、同じファイルを(ファイル名で)保存しないでください。

私は自分の解決策を持っています。 filenameからsha1を計算します。最初の5つのシンボル、例えばabcdeをとり、/ files/a/b/c/d/e /に置くと良いですが、1つのフォルダに4kファイル、2番目の6kファイルが入っている場合があります。ファイル数を互いにもっと近づける方法はありますか?最大ファイル数は10kまたは10kkです。

ありがとうございました。

P.S.私は何か間違って説明しているので、もう一度:)タスクは単純です - あなたは自分自身のデータなしでアップロードされたファイルだけを格納する必要がありますhtmlとphp(任意のDBなし)とファイルディレクトリがあります。重複をファイル名で保存せずにファイルディレクトリへのアップロードを処理し、各ディレクトリ内のファイル数(各ディレクトリ内の最適なファイルとカウントファイルは互いに接近している必要があります)でサブディレクトリごとに分割したファイルを分割できるスクリプトを開発する必要があります。

+4

私はそれについて心配しません。配布は、ハッシュの仕組みによってかなりランダムに行われるべきです。 – ceejayoz

+0

タイムスタンプからsha1を計算する方が良いでしょうか? – neoneye

+0

タイムスタンプは機能しません。ファイル名で重複したファイルをすばやく見つけなければなりません。既に存在する場合は、アップロードされたファイルを保存しません。 –

答えて

0

私はあなたがなぜそれをやりたいのか分かりません。しかし、本当にこのようにしなければならない場合は、各フォルダに格納されるバイト数の制限を設定することをお勧めします。毎回あなたが現在のサブに

  1. でログを開き、データを保存する必要が
  2. そのディレクトリに書き込まれたバイト数の合計

もしあなたがcoulduse(新しいサブdiretoryを作成necesary現在のタイムスタンプが繰り返されないため)、バイト数をリセットします。 次に、ファイルを保存し、書き込まれたバイト数でバイト数をインクリメントします。

私はそれが仕事の価値があるのは間違いないと思っていますが、そのようにファイルを配布する理由はわかりません。

+0

no db、no log。 HTMLフォームと、このファイルが既に(ファイル名で)アップロードされて保存されているかどうかをチェックする関数です。 –

関連する問題