JSPとサーブレットを使用してアプリケーションを構築しています。その中にファイルアップロード機能を構築しようとしています。ローカルで作成したフォルダー構造がApacheWebサーバーに転送されることを確認したいと思います。これを達成する方法は何ですか?入力ファイルコントロールを使用して特定のフォルダーへのパスを指定するフォームがあります。フォームを送信すると、フォームで選択したフォルダーの下にあるファイルとフォルダーの階層がWebサーバー上に作成されます。フォルダにファイルが含まれている場合、ファイルは自動的にサーバーに転送されます。そのような機能を作ることは可能ですか?
1 に答える
ファイルがアップロードされると、通常はファイル名とファイルの内容のみが取得されます。通常、クライアント側のディスク ファイル システム パス全体も取得しません。貧弱な MSIE Web ブラウザのみが、セキュリティ バグのためにこの情報を誤って送信しますが、これを削除する/
か\
、ファイル名だけにする必要があります。Apache Commons FileUpload を使用している場合は、FilenameUtils#getName()
.
サーバー側のフォルダ構造については、アップロードしたファイルを一意の名前で固定フォルダに保存するだけです。もちろん、フォルダーがログインユーザーまたは何かを識別することになっている場合を除き、不必要に追加のフォルダーを作成しないでください。を使用File#createTempFile()
して、ファイル名のプレフィックスとファイル名のサフィックス (拡張子) に基づいて一意のファイル名を作成し、アップロードされたファイルが偶然に同じ名前で上書きされるのを防ぐことができます。
サーバー側のアップロード フォルダーの場所については、サーバーのフォルダー構造内の webapp のデプロイ フォルダーに含まれていないことを確認してください。つまり、アップロード後に新しく追加/変更されたファイルがデプロイされるWARに含まれていないという単純な理由で、Webアプリケーションを再デプロイするたびに毎回失われます。
ファイルの提供に関しては、アップロードフォルダーの場所を別の仮想ホストとしてサーバー構成に追加するだけです。Apache は非常に多くのソフトウェア製品を構築する巨大なソフトウェア会社であるため、「Apache Web サーバー」が正確に何を意味するのかは不明です。Apache HTTPD のことですか? アパッチトムキャット?アパッチ TomEE? アパッチ・ジェロニモ? など..JSP/サーブレットのコンテキストで話しているので、Apache Tomcatを想定します。次に、この回答に進んでください: How I save and retrieve a image on my server in a java webapp .