jiangping
2025-06-25 60acccaebef503315c852f31677b44eb3fd40a4f
server/service/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java
@@ -5,6 +5,9 @@
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.event.ProgressEvent;
import com.aliyun.oss.event.ProgressEventType;
import com.aliyun.oss.event.ProgressListener;
import com.aliyun.oss.model.*;
import com.aliyun.sdk.service.cloudauth20190307.AsyncClient;
import com.aliyun.sdk.service.cloudauth20190307.models.Id2MetaVerifyRequest;
@@ -17,6 +20,7 @@
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@@ -520,7 +524,7 @@
    }
    public boolean uploadOnlineObject(InputStream inputStream, String bucketName, String key,
    public boolean uploadOnlineObjectNew(InputStream inputStream, String bucketName, String key,
                                      String mime) throws OSSException, ClientException, IOException {
        if (inputStream != null) {
            // 判断是否存在,不存在创建
@@ -564,7 +568,63 @@
        return false;
    }
    public static ProgressModel queryProgressModel(String id){
        return PutObjectProgressListenerBiz.queryProgressModel(id);
    }
    public boolean uploadOnlineObject(InputStream inputStream, String bucketName, String key,String tempId,
                                      String mime) throws OSSException, ClientException, IOException {
        try {
            isExistBucket(bucketName);
            ObjectMetadata objectMeta = new ObjectMetadata();
            objectMeta.setContentLength(inputStream.available());
            // 可以在metadata中标记文件类型
            if (StringUtils.isNotBlank(mime)) {
                objectMeta.setContentType(mime);
            }
            PutObjectRequest putObjectRequest = null;
            if(StringUtils.isNotBlank(tempId)){
                ProgressModel pmodel = new ProgressModel();
                pmodel.setKey(key);
                pmodel.setId(tempId);
                pmodel.setStartDate(new Date());
                putObjectRequest = new PutObjectRequest(bucketName, key,
                        inputStream).withProgressListener(new PutObjectProgressListenerBiz(pmodel));
            }else{
                putObjectRequest = new PutObjectRequest(bucketName, key,
                        inputStream);
            }
            PutObjectResult putObjectResult = client.putObject(putObjectRequest);
            // 下载文件的同时指定进度条参数。此处GetObjectProgressListenerDemo为调用类的类名,请在实际使用时替换为相应的类名。
//            ossClient.getObject(new GetObjectRequest(bucketName,objectName).
//                    <GetObjectRequest>withProgressListener(new GetObjectProgressListenerDemo()));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (inputStream != null) {
                // 判断是否存在,不存在创建
                inputStream.close();
            }
            if (client != null) {
                client.shutdown();
            }
        }
        return false;
    }