2016-05-04 6 views
2

これは私のStrutファイルです。プロジェクトのWebContentにあるフォルダに保存されているpdfファイルをダウンロードしたい

<action name="sample" class="com.action.getPdf" method="getPdf"> 
    <result name="success" type="stream"> 
     <param name="inputName">fileInputStream</param> 
     <param name="contentType">application/pdf</param> 
     <param name="contentDisposition">attachment;filename="${fileName}"</param> 
     <param name="bufferSize">1024</param> 
    </result> 
</action> 

と、これはファイルの目的はnullを取得しているアクションコードです。

public String getPdf()throws Exception 
    { 
     Session ss = HibernateUtils.getSess(); 
     Transaction t=ss.beginTransaction(); 
     HttpSession httpsession=request.getSession(); 
     String path2=request.getParameter("path1"); 
      ServletContext servletContext = ServletActionContext.getServletContext(); 
     //String path3=servletContext.getRealPath(path2); 
     System.out.println("the relative path of the file is:"+path2); 
     try 
      { 

      File fileToDownload = new File(path2); 
      fileInputStream = new FileInputStream(fileToDownload);    

      } 

      catch (Exception e) 
      { 
      if (t!=null) 
      { 
       t.rollback(); 
       e.printStackTrace(); 
      } 
      } 
      finally 
      { 
       ss.close(); 
      } 


     return "success"; 
     } 

ダウンロードしたいファイルをWebコンテンツフォルダに保存し、そのパスをデータベースに保存しました。 問題は何か分かりません。

答えて

1

パラメータpath1が欠落している場合、このメソッドはnullを返すことが

String path2=request.getParameter("path1"); 

での問題。 nullでない場合は、アプリケーションがアクセス可能な読み取り可能なファイルへの有効なパスである必要があります。

How to read file in Java – FileInputStreamを読んでください。コードを使って出力をトレースすることができます。

System.out.println("Total file size to read (in bytes) : " 
       + getFileInputStream().available()); 

ゲッターはstream結果を返すために必要とされ、あなたは結果の設定で動的パラメータを使用しているよう。 fileNameのゲッターを提供する必要があります。

+0

次の例外が発生しています –

+0

java.lang.IllegalArgumentException:呼び出しスタック内に[inputStream]という名前のjava.io.InputStreamが見つかりません。このアクションに指定されたタグを確認してください。 –

+1

'getFileInputStream()'メソッドが必要です。 –

0

私はこの質問を解決しました。私はデータベースのファイルの物理パスを保存しています。たとえば、プロジェクトパスが の場合:D:/Workspace_ABC/SampleProject/WebContent/D-Files/APJ.AbdulKalam.pdf このパスをそのまま保存します。データベーステーブルこのパスを使用してファイルをダウンロードします。

関連する問題