【发布时间】:2017-06-02 10:59:27
【问题描述】:
我有一个网络项目
- 从 Oracle DB 中提取数据
- 使用 HashMap 从该数据中创建一个 XML 文件
- 压缩到内存中
- 让用户下载 ZIP 文件。
请注意,我不会在下载之前创建物理文件。
我完成了 1-3。我似乎找不到下载部分的解决方案。我正在使用纯 Spring MVC(尽我所能)、Hibernate、MySQL。
HomeController.java
@RequestMapping(value="/doretrieve", method=RequestMethod.POST, produces="application/zip")
@ResponseBody
public ZipOutputStream doRetrieve(@RequestParam(value="calcgrouplist") String selectedCalcGroups, @RequestParam(value="env") String currentEnv){
ZipOutputStream zipCalgGroups = null;
try {
String[] cgs = calcGroupService.insertToArray(selectedCalcGroups);
for(String cg:cgs){
System.out.println("Calculation Group: " + cg);
}
Map startRetrieve = calcGroupService.startRetrieve(currentEnv, cgs);
if (startRetrieve != null ){
zipCalgGroups = calcGroupService.zipCalcGroups(currentEnv, startRetrieve);
} else {
return null;
}
} catch (NullPointerException e) {
e.printStackTrace();
}
return zipCalgGroups;
}
CalcGroupService.java 创建xml文件的zip文件的代码/s
public ZipOutputStream zipCalcGroups(String database, Map startRetrieve) {
//Sort
//SortCalcGroupParameters sort = new SortCalcGroupParameters();
//sort.run(new File("\\" + database));
Map<String, byte[]> mapXmlFiles = startRetrieve;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos))
{
for (Map.Entry<String, byte[]> mapXmlFile:mapXmlFiles.entrySet()){
ZipEntry entry = new ZipEntry(mapXmlFile.getKey());
zos.putNextEntry(entry);
zos.write(mapXmlFile.getValue());
zos.closeEntry();
}
return zos;
} catch (IOException e) {
e.printStackTrace();
}
return null;
【问题讨论】:
标签: java mysql hibernate spring-mvc