2016-09-16 3 views
1

fileという名前のマップがあります。私のコントローラから、asset/myfiles/file.pdfに保存されているファイルのパスと説明が次の形式で含まれています。 :GSPページの変数パス名からPDFファイルを開く

{"filepath": "file.pdf", 
"description": "something"} 

レンダリングするGSPページでこのpdfへのリンクを作成するにはどうすればよいですか?

<a href="${resource(dir: 'myfiles', file:' ${file[filename])' }" target="_blank">${file[description]}</a> 

私は上記を試してみましたが、それはPDFファイルを開きませんが、単にアプリ

+0

リソースは、アプリケーションリソースの事前資産であり、グレーズ上にあります。2.アセットのイメージのロード方法を検索し、アセット設定で新しいフォルダを構成する必要があります。最も重要なのは、これはアセットフォルダにあるため、アプリを推測します。戦争を再インストールするときに何が起こるのかは、アプリ履歴のようにファイルを永続化する必要があります。そうであれば方法に欠陥がある – Vahid

答えて

1

の別のクローン化されたタブは、コントローラのメソッドを作成し、ファイルをダウンロードして接続を作成します。

GSP:
ボタンを書いて、下記のようにあなたのGSPには、このコントローラのアクションへのリンクを作成します。

<g:link class="btn btn-info btn-sm" 
     action="downloadMyFile" resource="${instance}" 
          target="_blank">DOWNLOAD FILE</g:link> 

コントローラー:使用

 // This is Used To Open PDF File. 
     def downloadMyFile(){ 
      def file = new File("download/path/to/your/file") 
      response.setContentType("application/pdf") 
      response.setHeader("Content-disposition", "filename=${file.getName()}") 
      response.outputStream << file.newInputStream()  
     } 

[OR]

 // This is Simply Download Your File. 
     def downloadFile(){ 
      def file = new File("Path/to/your/File") 
      response.setContentType("application/octet-stream") 
      response.setHeader("Content-disposition", "filename=${file.getName()}") 
      response.outputStream << file.newInputStream() 
     } 

属性:

リソース:あなたはあなたのダウンロードアクションにインスタンスを渡すことができます。
target = "_ blank":新しいタブでファイルを開く/ダウンロードする。
アクション:コントローラで定義されているアクション名。

関連する問題