其他分享
首页 > 其他分享> > 单个文件上传和批量文件上传

单个文件上传和批量文件上传

作者:互联网

一、单个文件上传

前端代码可参考elementUI,后端代码主要上传一个文件MultipartFile multipartFile

@PostMapping("/upload")
  public ObjectRestResponse uploadKnowledge(@RequestParam(value = "multipartFile") MultipartFile multipartFile) throws IOException {
      Map<String, Object> map = new HashMap<String, Object>();
      System.out.println("multipartFile.getOriginalFilename() = " + multipartFile.getOriginalFilename());
      String originalFilename = multipartFile.getOriginalFilename();
      String substring = originalFilename.substring(originalFilename.lastIndexOf('.'));
      System.out.println(multipartFile.getName());
      if (multipartFile != null) {
          // 设置文件名称
          map.put("nameParam", multipartFile.getName());
          // 设置文件名称
          map.put("fileName", multipartFile.getName());
          // 设置文件类型
          map.put("contentType", multipartFile.getContentType());
          // 设置文件大小
          map.put("fileSize", multipartFile.getSize());

          // 创建文件名称
          String fileName = UUID.randomUUID() + substring;
          // 获取到文件的路径信息
          RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
          ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
          //文件存储路径
          String filePath = "G:\\creo\\product\\" + fileName;

          // 打印保存路径
          System.out.println(filePath);
          // 保存文件的路径信息,因为是本地存的,所以我返回的是可以访问的路径,到时候查可以直接查出来,
          //  将上传文件这个接口抽出来,可以复用,返回的路径可以存到相应的数据库
          map.put("filePath", "192.168.1.125:8765/product/" + fileName);
          // 创建文件
          File saveFile = new File(filePath);
          // 文件保存
          multipartFile.transferTo(saveFile);

      }
      return new ObjectRestResponse().data(map);
  }

postman或者apiFox测试如下:
postman或者apiFox测试

二、批量上传

批量上传主要是传一个路径,然后一层一层的读取文件,将文件上传到服务器中,我的还是上传到本地中。注意上传文件的大小是否有限制,如果报错可以参考:DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144


  @Test
    public void readFiles() throws Exception{
        //上传路径
       String path = "E:\\英语\\【初中英语教资面试】必看资料@Bilibili CocoPolaris";
       readFilesDir(path);
    }

//解析文件夹
private void readFilesDir(String path) throws Exception {
        LinkedList<File> dirList = new LinkedList<>();
        LinkedList<String> fileList = new LinkedList<>();
        File file = new File(path);
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()){
                dirList.add(file1);
            }else {
                FileInputStream fileInputStream = new FileInputStream(file1);
                MockMultipartFile mockMultipartFile = new MockMultipartFile(file1.getName(), file1.getName(), "application/json", fileInputStream);
                //System.out.println("mockMultipartFile = " + mockMultipartFile.getName());
                fileList.add(file1.getAbsolutePath());
                System.out.println("file1 = " + file1.getAbsolutePath());

                // 创建文件名称
                String fileName = UUID.randomUUID() + "."
                        + file1.getName();

                String filePath = "G:\\temp\\" + fileName;
                // 打印保存路径
                System.out.println(filePath);
                // 创建文件
                File saveFile = new File(filePath);

                // 文件保存
                mockMultipartFile.transferTo(saveFile);

            }
        }

        File temp;
        while ((!dirList.isEmpty())){
            temp=dirList.removeFirst();
            if (temp.isDirectory()){
                files = temp.listFiles();
                if (files==null) continue;
                for (File file1 : files) {
                    if (file1.isDirectory()){
                        dirList.add(file1);
                    }else {
                        FileInputStream fileInputStream = new FileInputStream(file1);
                       MockMultipartFile mockMultipartFile = new MockMultipartFile(file1.getName(), file1.getName(), "application/json", fileInputStream);
                       // System.out.println("mockMultipartFile = " + mockMultipartFile.getName());
                        fileList.add(file1.getAbsolutePath());
                        System.out.println("file1 = " + file1.getAbsolutePath());

                        // 创建文件名称
                        String fileName = UUID.randomUUID() + "."
                                + file1.getName();
                        //存储的路径
                        String filePath = "G:\\temp\\" + fileName;
                        // 打印保存路径
                        System.out.println(filePath);
                        // 创建文件
                        File saveFile = new File(filePath);

                        // 文件保存
                        mockMultipartFile.transferTo(saveFile);
                    }
                }
            }else {
                System.out.println("======================");
            }
        }
    }

标签:文件,file1,批量,filePath,getName,File,new,multipartFile,上传
来源: https://www.cnblogs.com/jasmine-e/p/16252745.html