// 渲染模板文件 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()
文件名编码