合同录入下:

  • [房间租赁合同和客户身份证上传失败] 大文件时涉及断点上传
  • [网络请求被篡改] 服务端验证请求、计算金额 [应收房款分期计算有误差]
    使用BigDecimal [租房合同保存失败,数据不完整] 事务

文件上传 MinIO

MinIO

安装

参考视频 安装MiniO

启动命令:

   minio.exe server D:\tmp\minio

其中 D:\tmp\minio 是图片存储根目录。需要根据自己的情况设置。

添加依赖

<dependency>
   <groupId>io.minio</groupId>
   <artifactId>minio</artifactId>
   <version>7.0.2</version>
</dependency>

上传示例代码

MiniO文档

    private final String BUCKET_NAME = "2010a";

    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file) throws InvalidPortException, InvalidEndpointException, IOException, InvalidBucketNameException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        //改写名字,但是不能改写类型;
        String name = file.getOriginalFilename(); // a.jpg;
        name = name.substring(name.indexOf(".")); //.jpg
        name = IdUtil.getSnowflakeNextIdStr()+name;// 随机数 + .jpg
         //修改为自己服务器上的key和secret。
        MinioClient minioClient = new MinioClient("http://localhost:9000", "ExgAQimtkr6sKLWW", "OyWuId4T1SqzMjJpZ9u8AQX2YL0Rm8Nq");

        PutObjectOptions options = new PutObjectOptions(file.getSize(), 11111111);
        options.setContentType(file.getContentType());

        minioClient.putObject(BUCKET_NAME, name, file.getInputStream(), options);


        String url = "http://localhost:9000/"+BUCKET_NAME+"/"+name;

        return Result.ok(url);
    }

配置servlet支持大文件

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 500MB
      max-request-size: 2048MB