私は、ユーザーがプロジェクトがホストされているサーバーに格納されているファイルをダウンロードできるSpring Webアプリケーションでビューを持っています。 このビューでは、情報がテーブルに表示されているファイルのリストを参照し、最後の列にはファイルをダウンロードするためのリンクが含まれています。 少数のファイルでHttpServletResponseのコンテンツタイプとヘッダがヌル値で送信され、コントローラ内の関数に設定されていても、ブラウザはapplication/octet-streamタイプの応答を表示します。Springファイルdownolad - httpServeletResponse nullヘッダーとコンテンツタイプ
私のJSPページで:
<a href="<spring:url value='/download/${file.fileid}'/>"><i class="fa fa-download" title="download"></i></a>
をそして、これはクラスのコントローラでdownolad関数のコードです:
@RequestMapping(value="/download/{fileid}", method = RequestMethod.GET)
public void download(@PathVariable Integer fileid, HttpServletResponse response)
{
File file = new File((directoryService.findBydata("feedback").getPath()).trim()+"\\"+ (fileservice.findByfileid(fileid).getfilename()).trim());
InputStream fis;
if(file.exists()){
try {
fis = new FileInputStream(file);
org.apache.commons.io.IOUtils.copy(fis, response.getOutputStream());
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition",
"attachment; filename="+(fileservice.findByfileid(fileid).getfilename()).trim());
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}
}私がの原因を見つけることができません
この問題、なぜこれが起こるか?ありがとう。
条件に障害が発生し、それが返事をおThak httpServeletResponse空ヘッダとコンテンツタイプ –
を返した場合、ファイルは、あなたのソースコード、サーバー側で存在していない場合ので、あなたがエンティティのオプションのファイルのアップロードなどの機能を持っていますか、ファイルは、私のアプリケーションによって生成され、apache POIを使用しています。処理が正常に終了したら、ファイルレコードをDBに保存します。 100%確実になるために、私はサーバーをチェックインし、ファイルはそこにあります。 – Asma