用于rest API的CSV下载不起作用



我试图通过将数据写入响应输出流来下载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为你做了

相关内容

  • 没有找到相关文章

最新更新