直接上代码


    /**
     * @description: 根据下载链接上传附件信息
     * @author ssss
     * @param yswjlj 原始文件路径
     * @param fjlx 附件类型
     * @date 2024/3/7 15:35
     * @version 1.0
    */
    @Override
    public MultiModeUploadRespDTO multiModeUpload(String yswjlj, String fjlx) {
        File file = null;
        MultiModeUploadRespDTO respDTO = null;
        String fileName = getFileName();//此处根据自己业务需要获取自定义文件名称
        try {
            file =  createTempFile(yswjlj,fileName);
            System.out.println("文件已保存至:" + file.getAbsolutePath());
            System.out.println("文件名称:" + file.getName());
            // 读取文件内容并构造字节数组
            byte[] bytesArray = Files.readAllBytes(Paths.get(file.getAbsolutePath()));
            // 设置文件名、原始文件名和MIME类型等信息
            String originalFilename = file.getName();

            // 判断文件存在并且不是目录
            if (file.exists() && !file.isDirectory()) {
                long sizeInBytes = file.length();

                // 将字节转换成MB
                double resultMb = (double) sizeInBytes / (double) (1024 * 1024);
                //取两位小数
                double sizeInMb = Math.round(resultMb * 100) / 100.0;

                System.out.println("文件大小 resultMb:" + resultMb + " MB");
                System.out.println("文件大小 sizeInMb:" + sizeInMb + " MB");


                // 创建MultipartFile对象
                MultipartFile multipartFile = new MockMultipartFile(originalFilename, originalFilename, fjlx, bytesArray);
                String multiModeType = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.upload.type");
                // 上传并返回访问地址
                respDTO = multiModeFileSimpleContext.multiModeUpload(multipartFile, multiModeType);
                respDTO.setSizeInMb(sizeInMb);

            }


        } catch (Exception e) {
            log.error("上传文件失败", e);
        } finally {
            if (file.exists()) {
                boolean flag = file.delete();
                System.out.println("file是否删除成功:"+flag);
            }
        }

        return respDTO;
    }
    
    
     /**
     * 在本地创建一个临时文件
     *
     * @param url 远端文件Url
     * @return File
     */
    public File createTempFile (String url,String fileName){
        //对本地文件命名
        String fileSuffix = url.substring(url.lastIndexOf("."), url.length());
        File file = new File(fileName+fileSuffix); // 要保存的文件名及路径
        URL urlfile;
        try {
            System.out.println("tempFile:->{}"+ file.getAbsolutePath());
            //下载
            urlfile = new URL(url);

            //  try 小括号里面的部分称为 try-with-resources 块,将实现了 java.lang.AutoCloseable 接口的资源定义在 try 后面的小括号中,
            //  无论 try 块是正常结束还是异常结束,这个资源都会被自动关闭
            try (InputStream inStream = urlfile.openStream();
                 OutputStream os = new FileOutputStream(file);) {
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return file;
    }

   /**
     * Minio文件上传接口
     *
     * @param file 上传的文件
     * @return 访问地址
     * @throws Exception
     */
    @Override
    public String uploadFile(MultipartFile file) throws Exception
    {
        String originalFilename = file.getOriginalFilename();
        InputStream inputStream = file.getInputStream();
        PutObjectArgs args = PutObjectArgs.builder()
                .bucket(minioConfig.getBucketName())
                .object(originalFilename)
                .stream(inputStream, -1, 10485760)//上传未知大小的文件
                .build();
        client.putObject(args);
        IoUtils.closeQuietly(inputStream);

        // 目前提供永久有效的链接,如果需要私有文件链接,需要实现获取链接接口
        return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + originalFilename;
    }