2012-05-11 2 views
2

私はPDFを返すように単純スプリングMVC制御方法を有する:スプリングPDFをダウンロードするためのコントローラ、LOCATION.HREF、jQueryのモーダルとし、IE8ヘッダ

@RequestMapping(value="/attachment/portfolios/{investorNum}/reports/{reportId}/periods/{reportingPeriod}") 
    public ResponseEntity<byte[]> getReportForDownload(@PathVariable String reportId, @PathVariable long investorNum, @PathVariable long reportingPeriod) throws IOException{ 
     InputStream in = servletContext.getResourceAsStream("/sample.pdf"); 
     final HttpHeaders headers = new HttpHeaders(); 
     //headers.setContentType(MediaType.valueOf("application/pdf")); 
     headers.add("Content-Type", "application/pdf"); 
     headers.add("Content-disposition", "attachment; filename=abcd.pdf"); 
     return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED); 
    } 

バネのByteArrayメッセージコンバータ:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
     <property name="messageConverters"> 
     <util:list> 
       <bean id="byteArrayMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> 
     </util:list> 
     </property> 
    </bean> 

、ダウンロードのためのjQueryのモーダルボックス:

"Download" : function() { 
location.href = "./attachment/portfolios/2201/reports/DELINQSUM/periods/1137"; 
} 

ダウンロードボタンが幻想的な作品FF、Chromeではうまくいっていますが、IEではそうではありません。 IEは

と言っています。Internet Explorerはlocalhostから1137をダウンロードできません。

Internet Explorerはこのインターネットサイトを開けませんでした。要求されたサイト は利用できないか、見つからないサイトです。後で にもう一度お試しください。

私はhttp://support.microsoft.com/kb/3164312のように、ヘッダーに続くが、何も起こりませんし、IEは問題を報告し続けます。

また、私は以下の変更にモーダル内部に埋め込まれた表示用のPDFをストリーミングしていますし、それが正常に動作します:

headers.add("Content-disposition", "inline; filename=abcd.pdf"); 

私はTomcat上でこれを実行しています。

大変助かりました。

答えて

1

私は同じ問題を抱えています。私はApache FOPを使ってPDFを生成しており、同じヘッダーを持ったSpringの方法でレスポンスに書いています。ResponseEntity ResponseEntityコンストラクタでHttpStatus.CREATEDの代わりにHttpStatus.OKを選択して問題を解決しました。

もちろん、IE8はレスポンスコードとして201(CREATED)を認識しません。

関連する問題