实现步骤
- pom文件中引入了springboot-tater-web依赖
- 新建cotroller类,其中的RequestMapping方法的方法参数中配置
HttpServletResponse类 - 方法中实现读取服务器文件流操作类,servlet写入流操作类。
完整代码
@RequestMapping("getFile") @ResponseBody public void getFile(HttpServletResponse response) throws Exception{
File readFile = new File("/home/ssx/Music/CloudMusic/夜曲-周杰伦.flac"); //字节流-用于读文件 这里只是demo用的非缓冲流。实际项目可以用BufferedInputStream。 此功能是读取图片,所以用的字节流。如果是文本的话可以用字符流效率高,具体类看下面注释 // BufferedReader bufferedReader = new BufferedReader(new FileReader(readFile));//字符流 FileInputStream fileInputStream = new FileInputStream(readFile);//字节流 //设置文件下载方式 response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode("夜曲-周杰伦.flac","utf-8")); //获取servlet响应输出字节流 // PrintWriter writer = response.getWriter();//字符流 ServletOutputStream outputStream = response.getOutputStream(); //字节流 //流数据交换,每次交换10k数据大小 (1024k = 1m) byte[] bytes = new byte[1024*10]; int read; do {
read = fileInputStream.read(bytes); outputStream.write(bytes,0,read); }while (-1 != read); //关闭资源 IOUtils.closeQuietly(fileInputStream); IOUtils.closeQuietly(outputStream); }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224638.html原文链接:https://javaforall.net
