我试图通过将数据写入响应输出流来下载csv。我已将内容处置设置为text / csv,application / octet-stream,openxml,ms-excel.Tried包括accept header。 还尝试了Response Builder来构建bytearrayoutputstream。
甚至在本地创建了一个文件并尝试下载。
但是,我在响应正文中得到了csv响应。下载没有发生,没有提示下载。我正在使用RESTEASY JAXRS。
@POST
@Path("/response")
@Produces({"application/vnd.ms-excel"})
@Consumes({MediaType.APPLICATION_JSON})
public void viewSomething(PolicyRequest input,@Context HttpServletResponse responseExcel){
try
{
List<List<String>> data= getData(something)
String filename = "sample.csv";
responseExcel.addHeader("Content-Disposition", "attachment;filename="+filename);
responseExcel.addHeader("Content-Type" ,"application/vnd.ms-excel");
OutputStreamWriter osw = new OutputStreamWriter(responseExcel.getOutputStream());
CSVWriter writer = new CSVWriter(osw);
for(List<String> rows : data){
String[] row = rows.toArray(new String[0]);
writer.writeNext(row);
}
writer.flush();
writer.close();
osw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:0)
您返回了错误的Content-Type标头:@Produces({"application/vnd.ms-excel"})
应为@Produces({"text/csv"})
还明确设置了标头,因为@Produces
为您做到了