从 GSP 页面中的变量路径名在新窗口中打开 pdf 文件
Posted
技术标签:
【中文标题】从 GSP 页面中的变量路径名在新窗口中打开 pdf 文件【英文标题】:Open pdf file in new window from variable path name in GSP page 【发布时间】:2017-01-24 23:13:45 【问题描述】:我有一张名为 file
的地图,我从我的控制器收到,其中包含存储在 assets/myfiles/file.pdf 中的文件的路径和描述,格式如下:
"filepath": "file.pdf",
"description": "something"
如何在我正在呈现的 GSP 页面中创建指向此 pdf 的链接?
<a href="$resource(dir: 'myfiles', file:' $file[filename])' " target="_blank">$file[description]</a>
我尝试了上述方法,但它没有打开 pdf,而只是打开了应用程序的另一个克隆标签
【问题讨论】:
Resource's 用于 grails 2 上的应用程序资源 pre assets。您需要查看 assets 如何加载图像并可能在 assets 配置中配置新文件夹。最重要的是,由于这是在资产文件夹中,我假设在应用程序中重新安装战争时会发生什么,您是否需要通过应用程序历史记录来保留文件。如果是这样,方法是有缺陷的 【参考方案1】:创建控制器方法并编写连接以下载您的文件。
普惠制: 在您的 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()
[或]
// 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" :在新标签中打开/下载文件。 action :控制器中定义的动作名称。
【讨论】:
以上是关于从 GSP 页面中的变量路径名在新窗口中打开 pdf 文件的主要内容,如果未能解决你的问题,请参考以下文章