为静态资产文件创建下载 link
Create download link for static asset file
我想在我的网站上下载 link,以便用户可以下载文件 template.csv
。该文件是静态文件,位于我的 /grails-app/assets
文件夹的根目录下。
在我的 page.gsp
中,我尝试了 2 种方法,但无济于事:
<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 文件有一个 link 到
localhost:8080/mysite/assets/template.csv
但点击它提示错误消息: Failed - no file
.
实现我想要实现的目标的正确方法是什么?我需要添加额外权限才能下载我的文件吗?
我们的 webapp 依赖于相当陈旧的技术栈:
- Grails 2.3.4
- 插件 asset-pipeline-2.2.5
我在直接使用 -tag 下载文件时遇到了一些问题。
为了克服这个问题,我使用 Controller 方法 return 文件并将可下载文件放在 web-app/:
下它们自己的文件夹中
class MyController {
@Autowired()
AssetResourceLocator assetResourceLocator
def downloadExcelTemplate () {
String fileName = "MyExcelFile.xlsx"
/* Note: these files are found in /web-app/downloadable directory */
Resource resource = assetResourceLocator.findResourceForURI("/downloadable/$fileName")
response.setHeader "Content-disposition", "attachment; filename=${resource.filename}"
response.contentType = 'application/vnd.ms-excel'
response.outputStream << resource.inputStream.bytes
}
}
并且只需使用常规 a-tag 即可 link 此控制器方法。
这样您还可以更好地控制文件下载。
我想在我的网站上下载 link,以便用户可以下载文件 template.csv
。该文件是静态文件,位于我的 /grails-app/assets
文件夹的根目录下。
在我的 page.gsp
中,我尝试了 2 种方法,但无济于事:
<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 文件有一个 link 到
localhost:8080/mysite/assets/template.csv
但点击它提示错误消息:Failed - no file
.
- 生成的 html 文件有一个 link 到
实现我想要实现的目标的正确方法是什么?我需要添加额外权限才能下载我的文件吗?
我们的 webapp 依赖于相当陈旧的技术栈:
- Grails 2.3.4
- 插件 asset-pipeline-2.2.5
我在直接使用 -tag 下载文件时遇到了一些问题。
为了克服这个问题,我使用 Controller 方法 return 文件并将可下载文件放在 web-app/:
下它们自己的文件夹中class MyController {
@Autowired()
AssetResourceLocator assetResourceLocator
def downloadExcelTemplate () {
String fileName = "MyExcelFile.xlsx"
/* Note: these files are found in /web-app/downloadable directory */
Resource resource = assetResourceLocator.findResourceForURI("/downloadable/$fileName")
response.setHeader "Content-disposition", "attachment; filename=${resource.filename}"
response.contentType = 'application/vnd.ms-excel'
response.outputStream << resource.inputStream.bytes
}
}
并且只需使用常规 a-tag 即可 link 此控制器方法。 这样您还可以更好地控制文件下载。