首页 > 其他分享 >spring下载文件

spring下载文件

时间:2023-03-06 16:03:47浏览次数:28  
标签:realPath 文件 spring bytes fileName fileInputStream new httpHeaders 下载

@GetMapping("downloadImg")
public ResponseEntity<byte[]> downloadImg(HttpServletRequest request) {
    String realPath = request.getServletContext().getRealPath("upload/2.jpg");
    byte[] bytes;
    try {
        FileInputStream fileInputStream = new FileInputStream(realPath);
        bytes = new byte[fileInputStream.available()];
        int read = fileInputStream.read(bytes);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    //告知浏览器,我的流是一个 附件 (文件),浏览器触发下载
    HttpHeaders httpHeaders = new HttpHeaders();
    String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
    System.out.println(fileName);
    httpHeaders.setContentDispositionFormData("attachment", fileName);
    //返回对象
    ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, httpHeaders, HttpStatus.OK);
    return responseEntity;
}

乱码解决:获取文件名的时候,将文件名转为utf-8格式:

String encode = URLEncoder.encode(fileName, "UTF-8");

下载rar文件如下:

@GetMapping("downLoadTxt")
    public ResponseEntity<byte[]> downLoadTxt(HttpServletRequest request){
        //获取要下载的文件地址
        String realPath = request.getServletContext().getRealPath("upload/新建文本文档.txt");
        byte[] bytes;
        String fileName;
        try {
            //将文件转为字节流对象
            FileInputStream fileInputStream = new FileInputStream(realPath);
            //定义接收字节流对象的数组
            bytes = new byte[fileInputStream.available()];
            //读取字节流
            int read = fileInputStream.read(bytes);
            //获取文件名并且将文件名编码格式改为utf-8
            fileName = URLEncoder.encode(realPath.substring(realPath.lastIndexOf("\\")+1),"UTF-8");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //告诉浏览器,出发下载
        HttpHeaders httpHeaders = new HttpHeaders();
        //设置浏览器下载附件,传入文件名
        httpHeaders.setContentDispositionFormData("attachment",fileName);
        //返回响应实体,字节流数组,下载附件,状态
        return new ResponseEntity<byte[]>(bytes,httpHeaders,HttpStatus.OK);
    }

标签:realPath,文件,spring,bytes,fileName,fileInputStream,new,httpHeaders,下载
From: https://www.cnblogs.com/Liku-java/p/17184206.html

相关文章

  • .gitignore文件用法及如何配置
    .gitignore文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。项目开发过程中,有时候不想把一些文件(如中间文件/编译文件等)提交到git上。这个时候就由.gitignore文......
  • 从源码MessageSource的三个实现出发实战spring·i18n国际化
    1.前言互联网业务出海,将已有的业务​​CopytoGlobal​​,并且开始对各个国家精细化,本土化的运营。对于开发人员来说,国际化很重要,在实际项目中所要承担的职责是按照客户指定......
  • 第三方模块源码下载安装步骤讲解
    第一步:在Gitee上clone下来第二步:在本机下载目录找下载好了的源码文件第三步:装完之后,首先把路径复制下来第四步:之后来到项目,在terminal里面先CD到C盘,再把刚刚复制的......
  • FTP文件传输协议 :文件传输结束如何判断
    小结:FTP服务器有两大部分组成:一个主进程,负责接受新的请求;还有若干从属进程,负责处理单个请求。FTP文件传输协议经典问题:文件传输结束如何判断-知识库-新睿云https://......
  • (转帖)SpringBoot自动装配的原理
    自动装配:就是把自动去把第三方组件的Bean装载到IOC容器里,而不需要开发人员在去写相关的Bean的一个配置。在SpringBoot项目中只需要加@SpringBootApplication的一个注解就......
  • windows下载符号
    1"C:\ProgramFiles(x86)\WindowsKits\10\Debuggers\x86\symchk.exe""c:\windows\system32\calc.exe"/sSRV*c:\symbols\*http://msdl.microsoft.com/download/symbo......
  • 加深spring上传文件
    上传文件的详解创建控制层,上传文件:@ControllerpublicclassMyController{@PostMapping("/myUpload")publicStringupload(HttpServletRequestrequest){......
  • springboot集成nacos配置中心
    springboot版本2.6.7+nacos版本2.1.21、添加nacos依赖com.alibaba.bootnacos-config-spring-boot-starter0.2.122、配置application.propertiesnacos.config.boots......
  • cp 命令复制文件遇到的问题
    [root@himawaribozhou]#cp/etc/skel/.*cp:目标"/etc/skel/.bashrc"不是目录/etc/skel/.bashrc是文件,必须复制到一个目录里,所以命令后面要加.表示当前目录[......
  • 20_Spring_零XML事务控制
    ​ 创建配置类 packagecom.msb.config;importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importor......