【文件处理】spring boot 文件处理

接收文件

java 复制代码
   @PostMapping
   public result<String> add(MultipartFile file) throws IOException {
 
     // 得到目标文件夹
       File directory = new File("file");
     //如果文件夹不存在就创建
      if(!directory.exists()){
            directory.mkdirs();
        }
     //文件名称
       String fileName = file.getOriginalFilename();
     //得到文件的存放路径  ---directory.getCanonicalPath() 文件夹全路径 --- File.separator:分隔符
       String filePath = directory.getCanonicalPath() + File.separator + fileName;  

     
      // 创建新文件对象,指定文件路径为新路径
      File desc = new File(filePath);
    
      // 将前端发过来的文件输送给新文件 完成存入
      file.transferTo(desc);
      return result.success("success");
   }

发送文件

java 复制代码
  @GetMapping("/{url}")
   public void pdf(@PathVariable String url, HttpServletResponse response) throws IOException {
    
     //文件所在文件夹
      File directory = new File("file");
  
     //文件路径
      String filePath = directory.getCanonicalPath() + File.separator + url;
     
    
      try {
         fileName = URLEncoder.encode(fileName, "UTF-8");
        //StringBuilder().append拼接字符串性能更高
         String header = new StringBuilder().append("attachment;filename=")
                 .append(fileName).toString();
        //响应的内容类型为"application/octet-stream",这是一种通用的二进制数据格式。
         response.setContentType("application/octet-stream");
        //      content-type 指示响应内容的格式
//
//      content-disposition 指示如何处理响应内容。
//
//      一般有两种方式:
//
//      inline:直接在页面显示
//      attchment:以附件形式下载
         response.addHeader("Content-disposition", header);
        //响应内容不会被压缩传输,而是直接发送给客户端。
         response.addHeader("Transfer-Encoding", null);
        //表示在响应完成后,连接将被立即关闭,不再进行后续的数据交换。
         response.addHeader("connection", "close");
      } catch (UnsupportedEncodingException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
      }
   //得到文件
      File file = new File(filePath);
      FileInputStream in = null;
      OutputStream out = null;
      try {
        //读取文件
         in = new FileInputStream(file1);
         out = response.getOutputStream();
         IOUtils.copy(in, out);
         out.flush();
      } catch (FileNotFoundException e) {
         e.printStackTrace();

      } catch (IOException e) {
         e.printStackTrace();

      } finally {
         IOUtils.closeQuietly(out);
         IOUtils.closeQuietly(in);
      }


   }
相关推荐
Javatutouhouduan1 天前
SpringBoot整合reids:JSON序列化文件夹操作实录
java·数据库·redis·html·springboot·java编程·java程序员
wen__xvn1 天前
模拟题刷题3
java·数据结构·算法
bug攻城狮1 天前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端
無限進步D1 天前
Java 循环 高级(笔记)
java·笔记·入门
迪巴拉15251 天前
基于Vue与Spring Boot+Open Cv的智慧校园考勤系统
前端·vue.js·spring boot
小六溜了1 天前
模块二十三.网络编程&正则表达式&设计模式
java
今天你TLE了吗1 天前
JVM学习笔记:第八章——执行引擎
java·jvm·笔记·后端·学习
java1234_小锋1 天前
Java高频面试题:Redis里什么是缓存击穿、缓存穿透、缓存雪崩?
java·redis·缓存
me8321 天前
【Java】踩坑实录:Spring Boot + Nginx 本地部署404终极排查:从80端口被占用到配置生效全流程
java·spring boot·nginx
6+h1 天前
【Spring】AOP核心之原始对象与代理对象
java·python·spring