JAX-RS POST无法将空xlsx作为MIMEtypes返回
这是我的JAX-RS GET服务的代码
@GET @Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") @Path("/xlsReport") public Response viewXlsReport(@QueryParam("paymentIds")String paymentIds) throws IOException { List spaymentIds = Arrays.asList(paymentIds.split(",")); XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet s1 = wb.createSheet("Some Details"); File f = new File("Some Details.xslx"); FileOutputStream fos = new FileOutStream(f); wb.write(fos); fos.close(); return Response.ok((Object)file).build(); }
和POST服务是一样的
@POST @Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") @Path("/exportReport") @Consumes(MediaType.APPLICATION_JSON) public Response viewXlsReport(String ids) throws IOException { List<string> sIds = new ArrayList<String>(); StringTokenizer tokens = new StringTokenizer(ids,"&"); // populate sIds , not used in both GET & POST Version XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet s1 = wb.createSheet("Some Details"); File f = new File("Some Details.xslx"); FileOutputStream fos = new FileOutStream(f); wb.write(fos); fos.close(); return Response.ok((Object)file).build(); }
问题
- 从GET生成的xlsx打开罚款,
- 但是POST中的错误文件格式或扩展名无效
要点注意
- 两个代码都完全一样来生成空白的 xslx文件
- 试图从Java主,相同的代码生成空白的xlsx文件,运行良好
- 我也检查了临时文件在tomcat他们既可以GET和POST,但是当我从IE浏览器下载他们,我得到错误开放POST文件
唯一不同的是@GET&@POST和paymentIds被parsing,但是它们不被使用,因为我们正在生成空白文件(现在,稍后将用于打DB和获得一些细节)
真的不知道代码中有什么错误。
问题是在客户端在GET请求发送正确的头responseType:'arraybuffer',在POST我没有发送这个头,因此问题