zhanghua
2025-04-14 1cad14bca191807e18705c3a5526eda8151be439
ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
@@ -3,6 +3,7 @@
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.VoidResult;
import com.ycl.service.oss.OssService;
import com.ycl.utils.ConstantPropertiesUtils;
import com.ycl.utils.common.RandomUtils;
@@ -17,6 +18,8 @@
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.net.URLDecoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -43,10 +46,14 @@
        // 上传文件流
        try {
            // 获取文件的名称
            String fileName = "sczf/" + file.getOriginalFilename();
            byte[] newImg = file.getBytes();
            String originalFilename = file.getOriginalFilename();
            String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
            String fileName = "sczf/" + LocalDateTime.now().format(formatter) + RandomUtils.generateRandomInt(8) + fileType;
            if (".png".equalsIgnoreCase(fileType) || ".jpg".equalsIgnoreCase(fileType) || ".jpeg".equalsIgnoreCase(fileType)) {
                if (file.getSize() > 2097152) {
                    newImg = compressUnderSize(file.getBytes(), 2097152);
@@ -63,9 +70,10 @@
            // 把上传的文件路径返回 (手动拼接)
            // 这里设置图片有效时间 我设置了30年
            Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
            String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
            System.out.println("上传结束--" + dtf2.format(LocalDateTime.now()));
            System.out.println("上传结束--" + url + "------" + dtf2.format(LocalDateTime.now()));
            return url;
        } catch (Exception e) {
            System.out.println("uploadImages上传图片失败:");
@@ -147,59 +155,81 @@
    @Override
    public boolean deleteImages(String fileUrl) {
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
        //创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        String imgFile = fileUrl.replace("https://bucket-ans.oss-cn-hangzhou.aliyuncs.com/", "");
        String fileName = imgFile.substring(0, imgFile.indexOf("?"));
        try {
        // 根据BucketName,objectName删除文件
        ossClient.deleteObject(bucketName, fileName);
        ossClient.shutdown();
        return true;
            String endpoint = ConstantPropertiesUtils.END_POINT;
            String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
            //创建OSSClient实例
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            String imgFile = fileUrl.replace(ConstantPropertiesUtils.PREFIX_URL, "");
            String fileName = imgFile;
            if (imgFile.contains("?")) {
                fileName = imgFile.substring(0, imgFile.indexOf("?"));
            }
            fileName = URLDecoder.decode(fileName, "UTF-8");
            // 根据BucketName,objectName删除文件
            boolean b = ossClient.doesObjectExist(bucketName, fileName);
            if (b) {
                VoidResult voidResult = ossClient.deleteObject(bucketName, fileName);
//                System.out.println(voidResult.toString());
            }
            ossClient.shutdown();
            return true;
        } catch (Exception e) {
            System.out.println("-------删除图片失败,图片地址:" + fileUrl);
        }
        return false;
    }
    @Override
    public String uploadImages(InputStream inputStream, String ext) {
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
    public String uploadImages(InputStream inputStream, String ext, Integer times) {
        if (times < 3) {
            String endpoint = ConstantPropertiesUtils.END_POINT;
            String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("准备上传--" + dtf2.format(LocalDateTime.now()));
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件流
        try {
            // 获取文件的名称
            LocalDate date = LocalDate.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
            String fileName = "sczf/" + date.format(formatter) + RandomUtils.generateRandomInt(8) + "." + ext;
//        System.out.println("准备上传--" + dtf2.format(LocalDateTime.now()));
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传文件流
            try {
                // 获取文件的名称
                LocalDate date = LocalDate.now();
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
                String fileName = "sczf/" + date.format(formatter) + RandomUtils.generateRandomInt(8) + ext;
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentType(getcontentType(ext));
                ObjectMetadata objectMetadata = new ObjectMetadata();
                objectMetadata.setContentType(getcontentType(ext));
            System.out.println("开始上传--" + dtf2.format(LocalDateTime.now()));
//            System.out.println("开始上传--" + dtf2.format(LocalDateTime.now()));
            ossClient.putObject(bucketName, fileName, inputStream, objectMetadata);
            ossClient.shutdown();
                ossClient.putObject(bucketName, fileName, inputStream, objectMetadata);
                ossClient.shutdown();
            Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
                Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
            String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
                String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
//            System.out.println("oss上传成功:" + url);
            System.out.println("上传完成--" + dtf2.format(LocalDateTime.now()));
            return url;
        } catch (Exception e) {
            System.out.println("oss异常:" + e.getMessage());
            // e.printStackTrace();
            return this.uploadImages(inputStream, ext);
//            System.out.println("上传完成--" + dtf2.format(LocalDateTime.now()));
                return url;
            } catch (Exception e) {
                System.out.println("oss异常:" + e.getMessage());
                // e.printStackTrace();
                return this.uploadImages(inputStream, ext, times + 1);
            }
        } else {
            return "";
        }
    }