baizonghao
2023-03-31 d3e5446447c79948eee93035900401aff50706fb
ycl-platform/src/main/java/com/ycl/controller/platformApi/AlarmController.java
@@ -16,9 +16,11 @@
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
/**
 * @author admin
@@ -28,6 +30,8 @@
@RequestMapping("/API")
public class AlarmController {
    private IVideoAlarmReportService videoAlarmReportService;
    private static Integer index = 0;
    @Autowired
    private VideoUtil videoUtil;
@@ -65,24 +69,63 @@
//    @GetMapping(value = "/img")
    @ResponseBody
    public byte[] getImages(HttpServletResponse response, @RequestParam String fileUrl, @RequestParam String OSSAccessKeyId, @RequestParam String Signature) {
        index = 0;
        return getBytes(fileUrl, OSSAccessKeyId, Signature);
    }
    private byte[] getBytes(String fileUrl, String OSSAccessKeyId, String Signature) {
        try {
            URL url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId +"&Signature=" + Signature);
            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)");
            if (index < 10) {
                index++;
                System.out.println("getImages获取图片地址:" + fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                URL url = new URL(fileUrl + "&OSSAccessKeyId=" + OSSAccessKeyId + "&Signature=" + Signature);
                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 inputStream = conn.getInputStream();// 通过输入流获取图片数据
                InputStream inputStream = conn.getInputStream();// 通过输入流获取图片数据
            byte[] data = readInputStream(inputStream);
            return data;
                byte[] data = readInputStream(inputStream);
                System.out.println("getImages获取图片成功");
                return data;
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(index + "getImages获取图片失败:" + e.getMessage());
            getBytes(fileUrl, OSSAccessKeyId, Signature);
            // e.printStackTrace();
        }
        return null;
    }
    private static String inputStream2Base64(InputStream is) throws Exception {
        byte[] data = null;
        try {
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[100];
            int rc = 0;
            while ((rc = is.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            data = swapStream.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    throw new Exception("输入流关闭异常");
                }
            }
        }
        return Base64.getEncoder().encodeToString(data);
    }
    private byte[] readInputStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        //创建一个Buffer字符串