如何强制grails下载csv文件?

Fab*_*ier 13 grails groovy grails-controller

在我的gsp视图中,我有这个代码:

<g:each in="${fileResourceInstanceList}" status="i" var="fileResourceInstance">

<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td>${fileResourceInstance.decodeURL()}</td>

<td><a href="${createLinkTo( dir:"/upload_data/datasets/ds"+signalDataInstance.datasetID , file: fileResourceInstance.decodeURL(), absolute:true )}" target="_new">view</a></td>

<td><g:link action="deleteFile" id="${fileResourceInstance.replace('.','###')}" params="[rs:signalDataInstance.datasetID]" onclick="return confirm('Are you sure?');"> delete </g:link></td>
</tr>
</g:each>
Run Code Online (Sandbox Code Playgroud)

我想下载我的csv文件,而不是在我的浏览器中读取我的csv文件!
如何强制下载?

这是我的控制器中的代码部分:

    def f = new File( "${linkDir}".toString() )
    if( f.exists() ){
        f.eachFile(){ file->
        if( !file.isDirectory() )
            fileResourceInstanceList.add( file.name )
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的代码中添加此部分以强行下载?:

response.setHeader("Content-disposition", "attachment; filename=" + file.name + ".csv");
render(contentType: "text/csv", text: file.name.toString());
Run Code Online (Sandbox Code Playgroud)

Bur*_*ith 24

对render的调用是问题 - 直接写入响应输出流:

response.setHeader "Content-disposition", "attachment; filename=${file.name}.csv"
response.contentType = 'text/csv'
response.outputStream << file.text
response.outputStream.flush()
Run Code Online (Sandbox Code Playgroud)