1

JBossをアプリケーションサーバーとして実行していますが、HDのどこかにPDFファイルがあり、ユーザーが特定のアクションをクリックすると作成されます。ファイルがここにあるとしましょう:C:/PDF/doonot/10.07.2012/doonot.pdf。このファイルをダウンロードとして提供するにはどうすればよいですか?すでにCSVファイルでやったのですが、PDFでやる方法がわかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

私が書いたように、jspですべてのタイプのファイルをダウンロードする一般的な方法はありますか?

次のようなものを使用できます。

public HttpServletResponse getFile (HttpServletRequest request ,HttpServletResponse httpServletResponse, .......){
          HttpServletResponse response = httpServletResponse;
          InputStream in =/*HERE YOU READ YOUR FILE AS BinaryStream*/

          String filename = "";
          String agent = request.getHeader("USER-AGENT");
          if (agent != null && agent.indexOf("MSIE") != -1)
          {
            filename = URLEncoder.encode(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8");
            response.setContentType("application/x-download");
            response.setHeader("Content-Disposition","attachment;filename=" + filename);
          }
          else if ( agent != null && agent.indexOf("Mozilla") != -1)
          {
            response.setCharacterEncoding("UTF-8");
            filename = MimeUtility.encodeText(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8", "B");
            response.setContentType("application/force-download");
            response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
          }


          BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
          byte by[] = new byte[32768];
          int index = in.read(by, 0, 32768);
          while (index != -1) {
              out.write(by, 0, index);
              index = in.read(by, 0, 32768);
          }
          out.flush();

          return response;
}

アップデート:

次のように InputStream を使用できることを忘れないでください。

// read local file into InputStream
InputStream inputStream = new FileInputStream("c:\\SOMEFILE.xml");

または、このように使用することもできます

//read from database
Blob blob = rs.getBlob(1);
InputStream in = blob.getBinaryStream();
于 2012-07-11T09:15:58.223 に答える
0

PDFを読み取り、応答出力ストリームに書き込むサーブレットを作成するだけです。

ここの例:http ://www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html

于 2012-07-11T08:49:27.603 に答える
0

はい、グスタフは正しいです。Java はファイルの種類を区別しません。ファイルはファイルです。csv で実行した場合は、pdf でも機能するはずです。

于 2012-07-11T08:52:21.297 に答える