// 渲染模板文件
        File renderedFile = templateRenderService.render(params, stRecord.config)
        if (renderedFile) {
            try {
                response.reset(); //非常重要
                // 文件类型
                response.setContentType(cn.utils.FileUtils.getMimeByName(renderedFile.getName()))
                // 处理中文乱码
                def name = URLEncoder.encode(renderedFile.getName(), "UTF-8");
                response.addHeader("Content-Disposition", 'p_w_upload; filename="' + name + '"');
                // 输出到流
                response.outputStream << renderedFile.newInputStream()
                // 关闭流
                response.outputStream.close()
            } catch (Exception e) {
                log.error('输出文件时出现异常:' + e.getMessage())
            }
        } else {
            render '通过模板制作' + stRecord.config.nickname + '失败,请检查系统日志,或联系管理员'
        }


关键点:response.reset()

文件名编码