【发布时间】:2019-08-07 10:41:21
【问题描述】:
我有一个 csv 媒体文件,我正在尝试逐行读取此 csv,需要在浏览器中下载。
response.flushBuffer(); 似乎没有开始下载。没有观察到错误。
我可以在网络下的浏览器响应选项卡中看到完整的数据,并且格式正确。只是无法冲洗它。
final MediaModel media = mediaService.getMedia(catalogVersionModelHeader, mediaIdentifier);
final Collection<File> filesHeader = mediaService.getFiles(media);
final BufferedReader br = new BufferedReader(new FileReader(filesHeader.iterator().next()));
String line = "";
final CSVWriter csvWriter = new CSVWriter(getOutputWriter());
final Map<Integer, String> data = new HashMap<>();
int counter = 0;
try {
while ((line = br.readLine()) != null) {
data.put(new Integer(counter), line);
csvWriter.write(data);
}
counter++;
} catch (final IOException ioException) {
LOG.error(ioException);
}
csvWriter.close();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + "Report.csv" + "\"");
response.getOutputStream().write(getBytes(csvWriter));
response.flushBuffer();
}
public byte[] getBytes(final CSVWriter csvWriter) {
final StringWriter stringWriter = threadLocal.get();
return stringWriter.getBuffer().toString().getBytes();
}
public Writer getOutputWriter() {
final StringWriter writer = new StringWriter();
threadLocal.set(writer);
return writer;
}
没有观察到错误。
【问题讨论】:
-
什么是
getWriter()?您需要关闭编写器或流。 -
@user207421 我在任何地方都看不到 getWriter()。
-
我的错误,我的意思是
getOutputWriter()。它在哪里?它有什么作用?
标签: java csv spring-mvc hybris opencsv