3

マルチパートフォーム、ApacheFileUploadなどを使用してファイルをアップロードしています。正常に動作します。

ただし、次のように、サーバーにファイルを保存する際のベストプラクティスまたは一般的なプラクティスを知りたいです。

  • サーバー内のファイルに名前を付ける(つまり、どの名前が良いですか?生成されたUUID、またはファイル関連データを挿入したときにdbテーブルによって生成された行ID)
  • サーバー内のファイルの最適な場所(つまり、Linuxサーバーでは、どのフォルダーまたはパーティションを使用する必要がありますか。アップロードされたファイルを暗号化する必要がありますか?)
  • ブラウザからファイルにアクセスするためのリンクを設定する場合:直接アクセスするのが良いですか、それともサーブレットを使用するのが良いですか?
4

2 に答える 2

1
  1. この方法(ファイルシステム内のファイル、DB内のメタデータ)を行う場合、ファイル名の行IDは悪い考えではありません(少なくとも一意性が保証されます)。残念ながら、ファイルシステムとデータベースが同期していることに注意する必要があるため、慎重にコーディングする必要があります。
  2. パフォーマンスを重視する場合は、ファイルを別のHDD(またはNAS)に保存できます。ファイルの数が多くなる場合(数千)は、すべてを1つのフォルダーに入れるのではなく、それぞれが最大で数百のファイルを含むサブフォルダーにグループ化する必要があることに注意してください。ファイル数が多くなった場合、アクセス時間を短縮できます。暗号化の使用は、ビジネスニーズによって異なります(ファイルに機密データが含まれていますか?)。
  3. サーブレットは、実際のストレージの詳細をクライアントから隠し、アプリケーションの将来の変更に対する証拠となるため、より優れた方法です。また、他にもいくつかの利点があります(たとえば、アクセス制御を実装できる、ブラウザ/プロキシですぐにキャッシュできるなど)。また、暗号化を使用する場合は必須です。
于 2012-09-28T11:47:54.187 に答える
0

サーバーファイルシステムの操作で繰り返し問題が発生した後(アクセス許可の欠落、プラットフォームごとの異なる動作)、データベースにファイルデータをBLOBとして詰め込むことをお勧めします。このように、一意のファイル命名スキームを詳しく説明する必要はなく、すべての機密データが1か所に配置されます。

この場合、ダウンロード用のサーブレットが必要になります。これは、ファイルに保存されているデータにアクセスする場合でも、IMHOの方が適しています。

于 2012-09-28T11:15:22.943 に答える