我试图通过将数据写入响应输出流来下载csv。我将内容配置设置为text/csv, application/octet-stream, openxml, ms-excel。尝试包含接受标头。也尝试了响应生成器来构建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();
}
}
您正在返回错误的Content-Type header: @Produces({"application/vnd.ms-excel"})
应该是@Produces({"text/csv"})
也显式设置标题应该是过时的,因为@Produces
为你做了