2017-03-27 14 views
0

Apache POIのHSFLを使用して、Spring MVC @RequestMappingメソッドからクライアントに非同期でPowerPointファイルを返そうとしています。しかし、私はSpring MVCとApache POIを使用してPPTファイルをダウンロードする

をダウンロードするファイルはここ

@RequestMapping(value = "/downloadPPT", produces = "application/vnd.ms-powerpoint") 
public @ResponseBody byte[] downloadPPT(HttpServletResponse response) throws IOException { 
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
    byte[] bytes = null; 
    HSLFSlideShow ppt = new HSLFSlideShow(); 

    // add first slide 
    HSLFSlide s1 = ppt.createSlide(); 

    // add second slide 
    HSLFSlide s2 = ppt.createSlide(); 

    // save changes in a file 
    FileOutputStream out = new FileOutputStream("slideshow.ppt"); 

    ppt.write(outputStream); 
    out.close(); 
    bytes = outputStream.toByteArray(); 

    return bytes; 

} 

私のコードです取得することはできません私の応答は、しかし、ユーザーがダウンロードするように指示されません、私が作成したPPTファイルのバイト版のようですファイル。私はここで間違って何をしていますか?

+0

http://stackoverflow.com/questions/5673260/downloading-a-file-from-spring-controllers –

答えて

1

何も返品する必要はありません。 試してみてください

OutputStream os = response.getOutputStream();

ppt.write(os);

response.setContentType( "application/vnd.ms-powerpoint");
response.setHeader( "Content-Disposition"、 "attachment; filename = \" slideshow.ppt \ "");

、最終的に

os.flush()内の、

os.close();

UIからフォームを送信してください。期待どおりの結果が得られます。

+0

Thanks Tasmineは、Internet Explorerでコントローラメソッドを直接押すだけで強制的にダウンロードできます。さもなければ、ダウンロードは決して開始しません。これについての考えは? –

関連する問題