springMVC 3下载一个Excel文件
即使在我的控制器方法中没有错误,我也无法从浏览器中下载excel文件。
@RequestMapping(value = "/getExcelFile", method = RequestMethod.GET, produces="application/json") public @ResponseBody HttpEntity<byte[]> getUserDetailsExcelFile(@RequestParam Long id) { try { byte[] wb = ExcelReportView.buildExcelDocument(data); HttpHeaders header = new HttpHeaders(); header.setContentType(new MediaType("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet")); header.set("Content-Disposition", "attachment; filename=test.xls"); header.setContentLength(wb.length); return new HttpEntity<byte[]>(wb, header); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
我收到了来自萤火虫的资讯要求。
Request Method:GET Status Code:200 OK Request Headersview source Accept:application/json, text/plain, */* Accept-Encoding:gzip,deflate,sdch Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Cookie:org.cups.sid=ed8f7540d976ccc90b85954f21520861; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=fr; __ngDebug=true; JSESSIONID=tqi3ofownl17 Host:localhost:8888 Referer:http://localhost:8888/ User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36 X-Requested-With:XMLHttpRequest Query String Parametersview sourceview URL encoded id:1 Response Headersview source Cache-Control:no-cache Content-Disposition:attachment; filename=test.xls Content-Length:1849 Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
和回应的内容
A \p B a= =h \: #8X@ " 1 Arial1 Arial1 Arial1 Arial"$"#,##0_);("$"#,##0)"$"#,##0_); [Red]("$"#,##0) "$"#,##0.00_);("$"#,##0.00)% "$"#,##0.00_);[Red]("$"#,##0.00),*'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)5)0_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)4,/_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)=+8_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_) + ) , * ` Users Details c First Name Last NameEmailPhone Address Last AppointmentAppointment Status K d MbP?_*+ % "d,, ? ?U v> @ e
所以我不知道该怎么做,我想让浏览器给我select文件夹中的文件。
谢谢
晚会有点晚但是…
我猜这个错误是在这一行:
header.set("Content-Disposition", "attachment; filename=test.xls");
尝试将“附件”更改为“内联”,如下所示:
header.set("Content-Disposition", "inline; filename=test.xls");