0


Springboot实现文件下载的方式

方式一:返回的数据写入响应流以文件方式下载

StringBuilder content =newStringBuilder();OutputStream outputStream =null;try{
            response.setHeader("Content-Disposition","attachment;filename="+ logId +".log");
            response.setHeader("Content-Type","application/octet-stream");
            response.setContentType("application/octet-stream; charset=UTF-8");
            outputStream = response.getOutputStream();
            outputStream.write(content.toString().getBytes());
            outputStream.flush();}catch(Exception e){// ignored}finally{if(outputStream !=null){try{
                    outputStream.close();}catch(IOException e){
                    e.printStackTrace();}}}

方式二:某个位置的文件下载

InputStream inputStream =null;OutputStream outputStream =null;HttpServletResponse response =HttpServletUtil.getResponse();try{
            response.setHeader("Content-Disposition","attachment;filename="+ logId +".log");
            response.setHeader("Content-Type","application/octet-stream");
            response.setContentType("application/octet-stream; charset=UTF-8");
            inputStream =Files.newInputStream(newFile("文件路径").toPath());
            outputStream = response.getOutputStream();byte[] b =newbyte[1024];int len;//从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1while((len = inputStream.read(b))>0){
                outputStream.write(b,0, len);}}catch(Exception e){// ignored}finally{try{if(inputStream !=null) inputStream.close();if(outputStream !=null) outputStream.close();}catch(Exception e){// ignored}}

===>工具类

packagecom.wisesoft.common.util;importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/**
 * ClassName: com.wisesoft.xodb.common.util.HttpServletUtil
 * Name:HttpServletUtil
 * Author: xiong-feng
 * Date: 2021/12/9 8:54
 * Description: 获取http信息
 */publicclassHttpServletUtil{/**
    * Description:  获取request请求域
    * Author: xiong-feng
    * Date: 2021/12/9
    */publicstaticHttpServletRequestgetRequest(){return((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();}/**
    * Description:  获取response响应域
    * Author: xiong-feng
    * Date: 2021/12/9
    */publicstaticHttpServletResponsegetResponse(){return((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getResponse();}}
标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/weixin_39557697/article/details/133693966
版权归原作者 X丶先生 所有, 如有侵权,请联系我们删除。

“Springboot实现文件下载的方式”的评论:

还没有评论