0

私はWebプロジェクトに取り組んでおり、ユーザーがすべてのアプリにファイルをアップロードできるさまざまなアプリに分かれています(ユーザーがすべてのアプリに同時にログインできるようにSSOを使用しています)。

問題は、各アプリが独自の方法でファイルを独自の場所にアップロードし、サーバーを混乱させ、どのファイルが属しているかを追跡できないことです。

すべてのアプリがそれを介してアップロードし、各ユーザーの割り当て、ファイルなどを追跡するために、このためのコンポーネントを開発したいと考えています。

これを自分で行う方法を理解できるので、これを行う際の良い習慣があるかどうか疑問に思っています。読める記事はありますか?これに利用できるシステムはありますか?また、疑問に思っている場合に備えて、PHP で実行しています。

4

1 に答える 1

1

最初に必要なことは、開始することです :) 試行錯誤を繰り返すのがプログラミングだからです。タスクの途中で最初からやり直さなければならないことに気付くかもしれませんが、これは職務記述書に記載されています。

しかし、始める前に計画を立てることは非常に役立つことに同意します。物事を正しく行うための優れた実践方法と標準をカバーするチュートリアルは知りませんが、いくつかのヒントを提供しようとします.

  • MIME タイプ、拡張子、ファイルサイズを必ず確認してください。忘れた場合や十分に注意していない場合に備えて、.htaccess からいくつかの種類のファイルをブロックすることもできます。

<FilesMatch ".(htaccess|htpasswd|php|js|exe|bat)$"> // extentions to block
Order Allow,Deny
Deny from all
</FilesMatch>  

ブラック リストの代わりにホワイト リストを作成することも検討できます。

  • 明確に定義された場所をいくつか用意します。これは、必要なファイルの量と、それらが必要な理由に大きく依存します。

大量のファイルがある場合は、ハッシュ テーブルの形式でフォルダー構造を作成できます。たとえば、英数字以外の文字を取り除き、ファイルの最初の文字に基づいて 2 レベルのフォルダーを作成できます。

例:

test_image.png => uploads/app_x /t/e/test_image.png

another_img.png => uploads/app_x /a/n/test_image.png


これには日付を使用することもできます ( wordpressのように):

test_image.png => uploads/app_x /2013/02/27/test_image.png

another_img.png => uploads/app_x /2013/02/26/test_image.png


ユーザーがファイルをアップロードした場合、ユーザーごとにフォルダーを作成することができます ( uploads/app_y/user_x/his_file.pdf )。

これにより、サーバー上のファイルの検索が大幅に高速化されます。開始する前にフォルダー構造を念頭に置いておくことをお勧めします。また、考えられるすべての種類のファイルを考慮に入れることをお勧めします。

  • 必要に応じて、ファイルの名前を変更することを検討してください。これは、たとえば、ファイルを公開するかどうかによって異なります。

私が家に帰ったら、このリストを続けますが、これは考える材料になるはずです.

于 2013-02-27T16:16:47.407 に答える