2012-02-23 17 views
0

1)oracle dbにblobとして格納されているpdfファイルをダウンロードします。しかし、私は0 KBのファイルを取得します。 私は前にこれをしなかった。ので、ボタンをクリックして のplsの助けサーブレットは、ダウンロードの仕事をして別のサーブレットを呼び出します。 これはファイルをダウンロードするために書いたコードです。blobをダウンロードした後にデータがありません。pdfファイル

protected void processRequest(HttpServletRequest request, HttpServletResponse resp) 
throws ServletException, IOException { 
    resp.setContentType("text/html;charset=UTF-8"); 
    try { 
     OutputStream outStream = resp.getOutputStream(); 
     List file=(List)request.getAttribute("file"); 
      String fileName=null; 
byte[] fileBytes=null; 
for (int i=0;i<file.size();i++) 
     { 
      Map objec=(Map) file.get(i); 
      fileName=(String)objec.get("fileName"); 
      fileBytes=(byte[])objec.get("fileBytes"); 
      } 
String fileType = fileName.substring(fileName.indexOf(".")+1,fileName.length()); 
    if (fileType.trim().equalsIgnoreCase("pdf")) 
{ 
resp.setContentType("application/pdf"); 
} 

resp.setHeader("Content-Disposition","attachment; filename=\""+fileName+"\""); 
resp.setHeader("cache-control", "must-revalidate"); 
System.out.println(fileBytes); 
} finally { 
     // out.close(); 
    } 
} 
ServletOutputStream outs = response.getOutputStream(); 

outs.write(fileBytes); 
outs.flush(); 
outs.close(); 

私が間違っていた場所を教えてください。データで完全なpdfファイルをダウンロードできますか?

2)このpdfファイルは、顧客の詳細の完全なレポートであると言います。レットは300ページあるとします。顧客ごとにページ番号が分かります。私のAntonyのためのexは、このpdfの彼のページ番号は4と5です。私はこの2つのページでファイルをダウンロードしたいだけです。私はこの作業をどのように行うことができますか?

UPDATE: jtahlbornは非常に愚かだった私の最初の問題を解決した...ちょうどので、私は最終的にはそれに成功した次の行

resp.getOutputStream().write(fileBytes); 
resp.getOutputStream().flush(); 
resp.getOutputStream().close(); 

を追加する必要がありました。今、pls some1私の2番目の問題を助けてください。私は、ページ番号がpdfから知られているページをダウンロードし、別のpdfファイルとして保存したいと思います。実際にそれは私がダウンロードしたいpdfです。最初のpdfではありません。私はちょうどblobファイルをダウンロードすることを学ぶためにそれをしました。

+1

別の質問として2番目の質問をしてください。 Stack Overflowは、質問に対する回答を提供するプラットフォームです。しかし、正解を特定する唯一の方法は、スレッドごとに1つの質問をすることです。 – APC

答えて

3

1)レスポンスに入れる代わりに、バイトを出力しています。例えばresp.getOutputStream().write(fileBytes);

2)おそらく、pdfファイルを分解するためのpdf解析/編集ライブラリが必要です。代わりに、いくつかのスタンドアロンのpdfエディタを使用して、事前にカスタマーごとのファイルにpdfを分けて個別にdbに格納することができます。

+0

申し訳ありません..残りのコードを追加するのを忘れました.... ServletOutputStream outs = response.getOutputStream(); outs.write(fileBytes);outs.flush(); outs.close(); –

+0

私はトピックを編集して、ファイルを印刷する行を追加しました..pls check ... –

+0

oh YES mr jtahlborn ....第1の問題は解決されました...ありがとうございました...今はabtを第2の問題 –

関連する問題