赞
踩
- @GetMapping({"/findTempalte/{fileName}"})
- public void exportInitTempalte(HttpServletResponse response, @PathVariable String fileName) {
- InputStream fis = null;
- ServletOutputStream toClient = null;
-
- try {
- String path = File.separator + "idmfiles" + File.separator + fileName + ".xlsx";
- ClassPathResource classPathResource = new ClassPathResource(path);
- fis = classPathResource.getInputStream();
- //在打成jar包后,可能会出现fis.available()=0的情况,导致下载文件为空白,所以不要
- //使用new byte[fis.available()],要直接使用new
- //byte[1024]或者使用相关工具类IOUtils.toByteArray(fis)
- //byte[] buffer = new byte[fis.available()];
- //fis.read(buffer);
- byte[] buffer = IOUtils.toByteArray(fis);
- response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
- response.setContentType("application/octet-stream");
- toClient = response.getOutputStream();
- toClient.write(buffer, 0, buffer.length);
- toClient.flush();
- } catch (Exception var11) {
- var11.printStackTrace();
- } finally {
- this.closeStream(toClient, fis);
- }
-
- }
-
- private void closeStream(OutputStream os, InputStream inputStream) {
- if (os != null) {
- try {
- os.close();
- } catch (IOException var5) {
- this.log.error(" closeOutputStream error {}", var5.getMessage());
- }
- }
-
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException var4) {
- this.log.error(" closeInputStream error {}", var4.getMessage());
- }
- }
-
- }
在打成jar包后,可能会出现fis.available()=0的情况,导致下载文件为空白,所以不要
使用new byte[fis.available()],要直接使用new byte[1024]或者使用相关工具类IOUtils.toByteArray(fis)
不要使用:
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
应该使用
byte[] buffer = IOUtils.toByteArray(fis);或者new byte[1024]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。