grails将此文件作为zip下载

grails将此文件作为zip下载,grails,grails-controller,Grails,Grails Controller,我有这个功能代码,我只想下载它作为zip而不是它的原始文件 这是我的密码: def downloadFile() { def filePath=ServletContextHolder.servletContext.getRealPath("/") + "Audio/" def sub = AudioClips.get(params.id) filePath+=sub.fileName def file = new File(filePath); if (

我有这个功能代码,我只想下载它作为zip而不是它的原始文件 这是我的密码:

def downloadFile() {
    def filePath=ServletContextHolder.servletContext.getRealPath("/") + "Audio/"
    def sub = AudioClips.get(params.id)
    filePath+=sub.fileName
    def file = new File(filePath);
    if (file.exists())
    {
        response.setContentType("application/octet-stream") // or or image/JPEG or text/xml or whatever type the file is
        response.setHeader("Content-disposition", "attachment;filename=\"${file.name}\"")
        response.outputStream << file.bytes
        redirect(controller: "category",action: "index")
    }
def下载文件(){
def filePath=ServletContextHolder.servletContext.getRealPath(“/”)+“音频/”
def sub=AudioClips.get(params.id)
filePath+=子文件名
def文件=新文件(文件路径);
if(file.exists())
{
response.setContentType(“application/octet stream”)//或image/JPEG或text/xml或文件的任何类型
response.setHeader(“内容处置”、“附件;文件名=\”${file.name}\”)

response.outputStream您尝试过什么?您尝试过的东西中有哪些不起作用?因此,这不是一个让人们为您编写代码的地方。请付出一些努力。以下是创建zip文件以帮助您开始的示例:
def downloadAudioZipFile = {
    def filePath = ServletContextHolder.servletContext.getRealPath("/") + "Audio/"
    def sub = AudioClips.get(params.id)
    filePath += sub.fileName
    def file = new File(filePath);
    if (file.exists()) {
        response.setContentType("application/octet-stream")

        response.setHeader("Content-Disposition", "Attachment;Filename=\"${file.name}\".zip")


        ZipOutputStream zip = new ZipOutputStream(response.outputStream);
        def file2Entry = new ZipEntry("${file.name}");
        zip.putNextEntry(file2Entry);
        zip.write(file.bytes)
        zip.close();
    }
}