从 GSP 页面中的变量路径名在新 window 中打开 pdf 文件

Open pdf file in new window from variable path name in GSP page

我有一个名为 file 的地图,我从我的控制器接收到该地图,其中包含存储在 assets/myfiles/file.pdf 中的文件的路径和描述,格式如下:

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

如何在我正在呈现的 GSP 页面中为该 pdf 创建 link?

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

我尝试了上面的方法,但它没有打开 pdf,而是打开了应用程序的另一个克隆标签

创建控制器方法并编写连接以下载您的文件。

普惠制:
在您的 GSP 中编写按钮并创建一个 link 到此控制器操作,如下所示。

<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()     
        }

[或]

        // 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" : Open/Download 新标签页中的文件。
action :在 Controller 中定义的动作名称。