前情:本地下载可以下载,以多种方式都可以下载,
但是上传到服务器线上后,出错
最终以分批下载的方式,则可以进行下载
有错误版本1
@RequestMapping(value = "/download_zip", method = {RequestMethod.POST, RequestMethod.GET}, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public WrappedResult downloadZip(HttpServletResponse response, HttpServletRequest request) throws Exception {
//File file = ResourceUtils.getFile("classpath:doc/user.zip");
//String filePath = getClass().getResource("/doc/user.zip").getPath();
try {
// 以流的形式下载文件。
ClassPathResource cpr = new ClassPathResource("/doc/user.zip");
BufferedInputStream fis = new BufferedInputStream(cpr.getInputStream());
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("人员资料佐证模板.zip", "UTF-8"));
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
throw new Exception("下载打包的文件失败!!");
}
return WrappedResult.success();
}
有错误版本2
@RequestMapping(value = "/download_zip", method = {RequestMethod.POST, RequestMethod.GET}, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public WrappedResult downloadZip(HttpServletResponse response, HttpServletRequest request) throws Exception {
// File file = ResourceUtils.getFile("classpath:doc/user.zip");
String filePath = getClass().getResource("/doc/user.zip").getPath();
try {
// 以流的形式下载文件。
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(filePath));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("人员资料佐证模板.zip", "UTF-8"));
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
throw new Exception("下载打包的文件失败!!");
}
return WrappedResult.success();
}
最终版 从服务器中下载文件
@RequestMapping(value = "/download_zip", method = {RequestMethod.POST, RequestMethod.GET}, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public WrappedResult downloadZip(HttpServletResponse response, HttpServletRequest request) throws Exception {
// File file = ResourceUtils.getFile("classpath:doc/user.zip");
InputStream in = getClass().getResourceAsStream("/doc/user.zip");
log.info("导入人员资料佐证模板下载---" + in);
try (// 以流的形式下载文件。
BufferedInputStream fis = new BufferedInputStream(in);
BufferedOutputStream toClient = new BufferedOutputStream(response.getOutputStream())) {
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("人员资料模板.zip", "UTF-8"));
int len = 0;
while ((len = fis.read()) != -1) {
toClient.write(len);
toClient.flush();
}
} catch (IOException ex) {
throw new Exception("下载打包的文件失败!!");
}
return WrappedResult.success();
}