【发布时间】:2016-07-04 11:24:46
【问题描述】:
我正在使用 Java 中的 apache.commons.csv 库来生成 CSV 并使其可下载,而无需使用以下代码存储在服务器上:
try (OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream())){
csvWriter = new CSVPrinter(osw,CSVFormat.DEFAULT);
writer.printRecord(row);
response.setContentType("text/csv");
response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\";");
catch(Exception e) {
//Exception block
}
finally {
try {
csvWriter.flush();
} catch (IOException e) {
logger.error("Exception while flushing file writer and CSV writer",e);
}
}
但它在浏览器上显示 csv,而不是要求我另存为下载选项。
代码有什么问题或者有其他方法可以做到这一点吗?
【问题讨论】:
-
两个螺丝钉:撒谎,让文件名以.xls结尾,Content-Type可能是“application/vnd.ms-excel”
-
@JoopEggen 它不起作用,仍在浏览器上打开
-
Content-Type
application/bin经常用于纯下载,应该这样做,因为浏览器无法打开。 -
哦,先设置标题,再写!抱歉没看到。但是 application/bin 仍然成立。标题行在空行之前输出,然后是内容,小输出的缓冲往往使顺序无关,但原则上应保持顺序。
-
感谢@JoopEggen,问题仅与标题有关。设置标题首先工作
标签: java csv apache-commons-csv