zhanghua
2025-02-06 55793861746f0a8dd74b84d444a60c43f982b255
oss获取图方式修改
3个文件已修改
228 ■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/task/SynchronizeDHAlarm.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -2,6 +2,14 @@
import cn.hutool.json.JSONConverter;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ycl.annotation.LogSave;
@@ -13,6 +21,7 @@
import com.ycl.service.video.IVideoAlarmReportService;
import com.ycl.service.video.impl.IVideoPointService;
import com.ycl.util.VideoUtil;
import com.ycl.utils.ConstantPropertiesUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
@@ -29,10 +38,7 @@
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
import java.util.*;
/**
 * @author admin
@@ -151,19 +157,58 @@
    }
    private URL translateOSSUrl(String fileUrl) {
        OSS ossClient = null;
        try {
            String endpoint = ConstantPropertiesUtils.END_POINT;
            String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
            String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
            String[] urlArray = fileUrl.split("Expires=");
            String[] urlArray2 = urlArray[0].split("aliyuncs.com/");
            String objectName = urlArray2[1].replace("?", "");
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 设置签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
            // 生成以GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
            return url;
        } 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());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return null;
    }
    private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature, String sessionId) {
        int index = sessionDic.get(sessionId);
        try {
            if (sessionDic.get(sessionId) < 10) {
                sessionDic.remove(sessionId);
                fileUrl = fileUrl.replace("Expires", "v");
//                System.out.println("getImages获取图片地址:" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                URL url = null;
                if (StringUtils.isNotBlank(OSSAccessKeyId) && StringUtils.isNotBlank(Signature)) {
                    url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                } else {
                    url = new URL(fileUrl);
                }
                URL url = translateOSSUrl(fileUrl);
//                fileUrl = fileUrl.replace("Expires", "v");
////                System.out.println("getImages获取图片地址:" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
//                URL url = null;
//                if (StringUtils.isNotBlank(OSSAccessKeyId) && StringUtils.isNotBlank(Signature)) {
//                    url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
//                } else {
//                    url = new URL(fileUrl);
//                }
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(10 * 1000);
ycl-platform/src/main/java/com/ycl/task/SynchronizeDHAlarm.java
@@ -51,7 +51,7 @@
                    if (videoAlarmReport.getPicByte() != null) {
                        String extension = "jpg";
                        InputStream inputStream = new ByteArrayInputStream(videoAlarmReport.getPicByte());
                        String picData = ossService.uploadImages(inputStream, extension);
                        String picData = ossService.uploadImages(inputStream, extension,0);
                        videoAlarmReport.setPicData(picData);
                    }
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
@@ -1,11 +1,20 @@
package com.ycl.sccgplatform;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyuncs.exceptions.ClientException;
import com.dahua.netsdk.lib.callback.impl.AnalyzerDataCB;
import com.ycl.common.util.UtilNumber;
import com.ycl.entity.dingding.DingUserInfo;
import com.ycl.entity.user.UmsAdmin;
import com.ycl.mapper.unlawful.UnlawfulMapper;
import com.ycl.service.oss.OssService;
import com.ycl.utils.ConstantPropertiesUtils;
import net.coobird.thumbnailator.Thumbnails;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,28 +42,128 @@
    @Test
    void test() {
        String fileUrl = "https://huachuang-resource.oss-cn-beijing.aliyuncs.com/家庭教育/中国陶行知协会家庭教育专委会.doc?Expires=1738857178&OSSAccessKeyId=LTAIxtcfDe3fgfcf&Signature=wTwx6JA6VWbPB0skVySy9MCexog=";
        // http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/sczf/2023062950465224.jpg?Expires=2634106907&OSSAccessKeyId=Tkf72Q1gdzETsZf6&Signature=ttME%2BeFhss8wPbkRCxAsV%2FPNWGQ%3D
        OSS ossClient = null;
        try {
            String endpoint = "https://oss-cn-beijing.aliyuncs.com";
            String accessKeyId = "LTAIxtcfDe3fgfcf";
            String accessKeySecret = "xHxLVU5dm7USdJuQaCfp1hpcUU1u8v";
            String bucketName = "huachuang-resource";
            String[] urlArray = fileUrl.split("Expires=");
            String[] urlArray2 = urlArray[0].split("aliyuncs.com/");
            String objectName = urlArray2[1].replace("?", "");
            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 设置签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
            // 生成以GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
            System.out.println(url);
//
//        // http://zhzfptoss.oss-cn-zjls-lszwy-d01-a.ops.zjlscloud.com/sczf/2025020620664017jpg?v=2684887407&OSSAccessKeyId=Tkf72Q1gdzETsZf6&Signature=88dn7R/gDdqxWUCqZdCi/NgSXg8=
//        OSS ossClient = null;
//        try {
//            // 以华东1(杭州)的外网Endpoint为例,其它Region请按实际情况填写。
//            String endpoint = "https://oss-cn-beijing.aliyuncs.com";
//            // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
////            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
//            // 填写Bucket名称,例如examplebucket。
//            String bucketName = "huachuang-resource";
//            // 填写Object完整路径,例如exampleobject.txt。Object完整路径中不能包含Bucket名称。
//            String objectName = "家庭教育/中国陶行知协会家庭教育专委会.doc";
//            // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为cn-hangzhou。
//            String region = "cn-beijing";
//            String accessKeyId = "LTAIxtcfDe3fgfcf";
//            String accessKeySecret = "xHxLVU5dm7USdJuQaCfp1hpcUU1u8v";
//            // 创建OSSClient实例。
//            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
//            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
//
//            ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//
//
//            // 设置签名URL过期时间,单位为毫秒。本示例以设置过期时间为1小时为例。
//            Date expiration = new Date(new Date().getTime() + 3600 * 1000L);
//            // 生成以GET方法访问的签名URL。本示例没有额外请求头,其他人可以直接通过浏览器访问相关内容。
//            URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration);
//
//
//            try {
//                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//                conn.setRequestMethod("GET");
//                conn.setConnectTimeout(10 * 1000);
//                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//
//                InputStream input = conn.getInputStream();// 通过输入流获取图片数据
//
//                FileOutputStream downloadFile = new FileOutputStream("D://1.doc");
//
//                int index;
//                byte[] bytes = new byte[1024];
//
//                while ((index = input.read(bytes)) != -1) {
//                    downloadFile.write(bytes, 0, index);
//                    downloadFile.flush();
//                }
//                downloadFile.close();
//                input.close();
//
//                    ByteArrayOutputStream outs = new ByteArrayOutputStream();
//                    Thumbnails.of(in).scale(0.6).outputQuality(1).toOutputStream(outs);
//                    InputStream ins = new ByteArrayInputStream(outs.toByteArray());
//                    String picData = ossService.uploadImages(ins, ".png", 0);
//                    System.out.println(picData);
        } 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());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
//        List<CategoryDto> data = unlawfuldao.getDataByType(0, 5,"2022-12-14 17:19:01", "2022-12-14 17:19:03");
//        System.out.println(data);
        String url = "http://test.xshcs.com/10%E6%9C%88%E6%8E%92%E6%9C%9F.jpg";
        try {
            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);
            connection.setRequestMethod("GET");
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream in = connection.getInputStream();
                ByteArrayOutputStream outs = new ByteArrayOutputStream();
                Thumbnails.of(in).scale(0.6).outputQuality(1).toOutputStream(outs);
                InputStream ins = new ByteArrayInputStream(outs.toByteArray());
                String picData = ossService.uploadImages(ins, ".png",0);
                System.out.println(picData);
            }
        } catch (IOException e) {
            System.out.println("获取网络图片出现异常,图片路径为:" + url);
            e.printStackTrace();
        }
    }
//        String url = "http://test.xshcs.com/10%E6%9C%88%E6%8E%92%E6%9C%9F.jpg";
//        try {
//            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//            connection.setReadTimeout(5000);
//            connection.setConnectTimeout(5000);
//            connection.setRequestMethod("GET");
//            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
//                InputStream in = connection.getInputStream();
//                ByteArrayOutputStream outs = new ByteArrayOutputStream();
//                Thumbnails.of(in).scale(0.6).outputQuality(1).toOutputStream(outs);
//                InputStream ins = new ByteArrayInputStream(outs.toByteArray());
//                String picData = ossService.uploadImages(ins, ".png",0);
//                System.out.println(picData);
//            }
//        } catch (IOException e) {
//            System.out.println("获取网络图片出现异常,图片路径为:" + url);
//
//            e.printStackTrace();
//        }
//}
//    @Test
//    void test1(){
@@ -86,7 +195,7 @@
        String PicData = br.readLine();
        byte[] data = DatatypeConverter.parseBase64Binary(PicData);
        InputStream inputStream = new ByteArrayInputStream(data);
        String s = ossService.uploadImages(inputStream, extension,0);
        String s = ossService.uploadImages(inputStream, extension, 0);
        System.out.println(s);
        br.close();
@@ -94,13 +203,13 @@
        fis.close();
    }
    @Autowired
    AnalyzerDataCB analyzerDataCB;
//    @Autowired
//    AnalyzerDataCB analyzerDataCB;
    @Test
    void alarmTest() {
        analyzerDataCB.invoke(null, 0, null, null, 0, null, 0, null);
//        analyzerDataCB.invoke(null, 0, null, null, 0, null, 0, null);
//        AlarmDataCB cbMessage = new AlarmDataCB();
//        String m_strIp = "172.28.194.177";