ユーザーがファイルをダウンロードできるようにするMaven/Spring/Javaアプリケーションがあります。これが私のアプリケーションのディレクトリ構造です。
src
main
java
com
mycompany
controller
MyDownloadController
resources
downloads
MyDocument.docx
そして、これがファイルをダウンロードするコントローラーコードです。
File file = new File("src/main/resources/downloads/MyDocument.docx");
response.setContentType("application/docx");
response.setContentLength((int) file.length());
response.setHeader("Content-Disposition", "attachment; filename=\"MyDocument.docx\"");
DataInputStream inputStream = new DataInputStream(new FileInputStream(file));
ServletOutputStream outputStream = response.getOutputStream();
int length = 0;
byte[] byteBuffer = new byte[4096];
while ((inputStream != null) && ((length = inputStream.read(byteBuffer)) != -1)) {
outputStream.write(byteBuffer, 0, length);
}
inputStream.close();
outputStream.close();
ローカルのTomcatサーバーではすべて正常に動作します。しかし、サーバー(Jelastic)にアップロードしようとすると、500エラーが発生しますjava.io.FileNotFoundException: src/main/resources/downloads/MyDocument.docx (No such file or directory)
。
サーバー上のTomcatディレクトリを調べたところ、ドキュメントがあります(会社のプライバシーのために実際のドキュメントのスクリーンショットは作成していません)。
これはクラスパスか何かと関係があると思います。しかし、正確に何を更新する必要があるのか、どのように更新する必要があるのかわかりません。