Cドライブに書き込む代わりに、サーバーで実行しますが、後で取得してxhtmlファイルに表示するために画像をどこに保存する必要がありますか?
これは、サーバーの構成をどの程度制御できるかによって異なります。理想的なのは、Tomcatwebappsフォルダーの外部に固定パスを構成することです。例:/var/webapp/upload
。このパスをVM引数または環境変数として設定すると、Webアプリがコードを変更せずにプログラムでパスを取得できるようになります。
たとえば、VM引数として-Dupload.location=/var/webapp/upload
を指定する場合 、次のようにアップロードを完了することができます:
Path folder = Paths.get(System.getProperty("upload.location"));
String filename = FilenameUtils.getBaseName(uploadedFile.getName());
String extension = FilenameUtils.getExtension(uploadedFile.getName());
Path file = Files.createTempFile(folder, filename + "-", "." + extension);
try (InputStream input = uploadedFile.getInputStream()) {
Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);
}
String uploadedFileName = file.getFileName().toString();
// Now store it in DB.
ファイルを返送する場合、最も理想的なのは、アップロード場所を別の<Context>
として追加することです。 Tomcatに。例:
<Context docBase="/var/webapp/upload" path="/uploads" />
このようにして、http://example.com/uploads/foo-123456から直接アクセスできます。 .ext
サーバーの構成を完全に制御できない場合は、DBに保存するか、AmazonS3などのサードパーティホストに送信するのが最善の策です。