从Springboot项目中下载文件
最近在做一个临时的项目,APP端在检测到程序有更新时,需要去后台下载新的安装包。具体过程如下:
controller层:
/** * 下载app * @param response */ @RequestMapping("downApp") @ResponseBody public void Download(HttpServletResponse response) { String fileName = "wuye.apk"; String result = FileUtil.downloadFile(response, fileName); log.info("app包下载结果:",result); }
工具类:
public class FileUtil { public static String downloadFile(HttpServletResponse response, String fileName) { File path = null; response.setHeader("content-type", "application/octet-stream"); response.setContentType("application/octet-stream"); try { response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8")); } catch (UnsupportedEncodingException e2) { e2.printStackTrace(); } byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { path = new File(ResourceUtils.getURL("classpath:").getPath()); os = response.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File(path + "/doc/" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (FileNotFoundException e1) { //e1.getMessage()+"系统找不到指定的文件"; return "系统找不到指定的文件"; } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } return "success"; }
访问:http://127.0.0.1:8081/ymd/downApp 文件就下载下来了,本方法借鉴了 网络上的一些文章