CSV下载for rest API无效

时间:2016-09-17 04:40:55

标签: rest csv response resteasy content-disposition

我试图通过将数据写入响应输出流来下载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();
    }
    }

1 个答案:

答案 0 :(得分:0)

您返回了错误的Content-Type标头:@Produces({"application/vnd.ms-excel"})

应为@Produces({"text/csv"})

还明确设置了标头,因为@Produces为您做到了