为静态资产文件创建下载链接

时间:2018-04-25 11:31:31

标签: html grails gsp

我想在我的网站上放置一个下载链接,以便用户可以下载文件template.csv。该文件是静态的,位于我的/grails-app/assets文件夹的根目录。

page.gsp内,我尝试了两种方法,但无济于事:

  • <a href="assets/template.csv" download="template.csv">Download the template</a>
    • 这会导致下载template.csv个文件,但内容是page.gsp的html代码,而不是我在资产中上传的文件的原始内容。
  • <a href="${assetPath(src: "template.csv", absolute: true)}" download="template.csv">Download the template</a>
    • 生成的html文件包含localhost:8080/mysite/assets/template.csv的链接,但点击它会提示错误消息:Failed - no file

做我想做的事的正确方法是什么?我是否需要添加额外权限才能下载我的文件?

我们的网络应用程序依赖于相当古老的技术堆栈:

  • Grails 2.3.4
  • 插件asset-pipeline-2.2.5

1 个答案:

答案 0 :(得分:1)

我在使用-tag直接下载文件时遇到了一些麻烦。

为了解决这个问题,我使用Controller方法返回文件并将可下载文件放在web-app /下的自己的文件夹中:

<td>
    @if (@Model.DevEUI == "D1")
    {
        <span>K School</span>;
    }

    @if (@Model.DevEUI == "96")
    {
        <span>BSNL OFFICE</span>;
    }

    else
    {
        <span>NA</span>;
    }
</td>

只需使用常规的a-tag链接到此控制器方法即可。 这样您还可以更好地控制文件下载。