0

コンピューターの機能を使用するには、.pdf ファイルの表示とダウンロードの両方が必要です。私はSpring MVC 3を使用しており、ビューはファイルの場所へのURLを指すのと同じくらい簡単です.

しかし、そのファイルをダウンロード可能にする方法がわかりません。以下のコードを試していますが、何も返されないようで、リクエストが完了しません。

@RequestMapping(value = "files/{fileName}")
public void downloadPDF(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) {
    logger.debug("Http request URL is " + req.getRequestURL());
    res.setContentType("application/pdf");
    URL pdf = null;
    try {
        pdf = new URL(req.getRequestURL().toString());
        BufferedInputStream is = new BufferedInputStream(pdf.openStream());

        IOUtils.copy(is, res.getOutputStream());
        res.flushBuffer();      
    } catch (IOException e) {
        e.printStackTrace();
    }

誰かがなぜそれが起こっているのか理解できますか?

ありがとう。

4

2 に答える 2

4

ファイルをダウンロード可能にしたい場合は、ヘッダー「Content-Disposition」を応答に追加する必要があります。

ヘッダーの形式は次のとおりです。Content-Disposition: attachment; ファイル名="fname.ext"

のようなものを試してみてください。

res.addHeader("Content-Disposition",  "attachment; filename=\"document.pdf\"");
于 2012-05-05T23:43:44.013 に答える
1

以下のコードを使用してください:

InputStream is = new FileInputStream(new File(..abcolute path...)));

response.setHeader("Content-Disposition", "attachment;filename=\""+filename+".pdf"+"\"");
IOUtils.copy(is, response.getOutputStream());     
              response.flushBuffer();

私のアプリケーションでは、正常に動作しています。

于 2012-05-07T04:39:41.537 に答える