我正在創建一個報告並將其發送給客戶端的應用程序。我使用了以下內容:XDocReport,Grails。是什麼觸發servletResponse將它發送到客戶端的數據/文件
這裏是我的代碼:
def OutputStream outputStream = response.getOutputStream();
try {
def InputStream inn = new FileInputStream(new File(invoiceExporterService.getTemplatePath(templateName)));
def IXDocReport report = XDocReportRegistry.getRegistry().loadReport(inn, TemplateEngineKind.Freemarker);
def FieldsMetadata metadata = report.createFieldsMetadata();
metadata.load("invoiceDetails", CustomerInvoiceDetail.class, true);
IContext context = report.createContext();
context = invoiceExporterService.prepareDataForExport(context, id);
report.process(context, outputStream);
} catch (IOException io) {
println "**" + io.properties + "**"
return false;
} catch (XDocReportException xd) {
println "**" + xd.properties + "**"
return false;
} catch (Exception e) {
println "**" + e.properties + "**"
return false;
}
def String fileName = DataFormatUtil.formatFileName(invoiceExporterService.getOutputFilename(), "docx");
response.setContentType("application/octet-stream");
// response.setContentType( 「應用程序/ vnd.openxmlformats-officedocument.wordprocessingml.document」); println fileName response.setHeader(「Content-Disposition」,「Attachment; Filename = $ {fileName}」); outputStream.flush();
現在的問題是,它不會將文件發送到客戶端。它發送了一些不是我需要的文件。
我的問題是:鑑於上面的代碼
1),有什麼不好?錯誤的原因是什麼? 2)需要執行哪些觸發器或代碼行才能將文件發送到客戶端?