diff --git a/web/src/main/java/com/leaper/web/config/S3Config.java b/web/src/main/java/com/leaper/web/config/S3Config.java index 5b4c687..d1693d2 100644 --- a/web/src/main/java/com/leaper/web/config/S3Config.java +++ b/web/src/main/java/com/leaper/web/config/S3Config.java @@ -1,9 +1,6 @@ package com.leaper.web.config; -import com.leaper.web.task.S3Utils; -import org.springframework.cache.CacheManager; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.annotation.Resource; @@ -15,11 +12,5 @@ public class S3Config { @Resource ConfigProperties properties; - @Bean - public S3Utils s3Utils() { - S3Utils s3Utils = new S3Utils(); - s3Utils.init(properties.getS3Config().getAccessKey(), properties.getS3Config().getSecretKey(), properties.getS3Config().getHost()); - return s3Utils; - } } diff --git a/web/src/main/java/com/leaper/web/controller/CameraRecord.java b/web/src/main/java/com/leaper/web/controller/CameraRecord.java index d1d5a1d..983a50a 100644 --- a/web/src/main/java/com/leaper/web/controller/CameraRecord.java +++ b/web/src/main/java/com/leaper/web/controller/CameraRecord.java @@ -12,7 +12,6 @@ import com.leaper.web.lib.CameraControlModule; import com.leaper.web.lib.hik.HikCameraControlModuleImpl; import com.leaper.web.mapper.CameraRecordDuojiMapper; import com.leaper.web.pojo.street.StreetSearch; -import com.leaper.web.task.S3Utils; import com.zhehekeji.core.pojo.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -42,76 +41,73 @@ public class CameraRecord { @Resource ConfigProperties configProperties; - @Resource - S3Utils s3Utils; - - - @PostMapping("/record") - @ApiOperation(value = "回放列表 ") - @LicenseHandler - public Result record(@RequestBody Record record) { - - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d"); - - LocalDate today = LocalDate.parse(record.getDate(), formatter); - - LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN); - LocalDateTime endOfDay = LocalDateTime.of(today, LocalTime.MAX); - List cameraRecordDuoji = cameraRecordDuojiMapper.selectList(new QueryWrapper() - .eq("camera_Id", record.getCameraId()) - .ge("start_Time", startOfDay) - .le("end_Time", endOfDay) - .orderByAsc("start_Time")); - record.setStartTimeLong(0L); - record.setEndTimeLong(24L * 60 * 60); - List urls = cameraRecordDuoji.stream() - .map(cameraRecordDuoji1 -> { - Record r = new Record(); - r.setUrl( "/"+configProperties.getS3Config().getBucketName() +"/"+cameraRecordDuoji1.getPath() +".mp4"); - r.setStartTimeLong(toSecondsSinceMidnight(cameraRecordDuoji1.getStartTime())); - r.setEndTimeLong(toSecondsSinceMidnight(cameraRecordDuoji1.getEndTime())); - return r; - }) - .collect(Collectors.toList()); - record.setUrls(urls); - - return new Result<>(record); - } - - @PostMapping("/convetor") - @ApiOperation(value = "视频转换 ") - @LicenseHandler - public Result convetor(@RequestBody Record record) { - String url = record.getUrl().replace(".mp4","").replace("/"+configProperties.getS3Config().getBucketName() ,"").substring(1); - // 文件或目录的路径 - String filePath =configProperties.getS3Config().getUrlCache() +url+".mp4"; - // 创建一个File对象 - File file = new File(filePath); - if(file.exists()){ - return new Result<>(true); - }else { - s3Utils.downloadFile(configProperties.getS3Config().getBucketName(), url, configProperties.getS3Config().getUrlCache() + url); - HikCameraControlModuleImpl.convetor(configProperties.getS3Config().getUrlCache() + url, filePath); - return new Result<>(true); - } - } - @PostMapping("/1") - @ApiOperation(value = "视频转换 ") - @LicenseHandler - public Result booleanResult(@RequestBody Record record) { - return new Result<>(true); - } - private static long toSecondsSinceMidnight(LocalDateTime dateTime) { - LocalDateTime midnight = dateTime.toLocalDate().atStartOfDay(); - Duration duration = Duration.between(midnight, dateTime); - return duration.getSeconds(); - } - - public static void main(String[] args) { - - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-dd"); - - LocalDate today = LocalDate.parse("2024-8-6", formatter); - System.out.printf(today.toString()); - } +// +// @PostMapping("/record") +// @ApiOperation(value = "回放列表 ") +// @LicenseHandler +// public Result record(@RequestBody Record record) { +// +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d"); +// +// LocalDate today = LocalDate.parse(record.getDate(), formatter); +// +// LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN); +// LocalDateTime endOfDay = LocalDateTime.of(today, LocalTime.MAX); +// List cameraRecordDuoji = cameraRecordDuojiMapper.selectList(new QueryWrapper() +// .eq("camera_Id", record.getCameraId()) +// .ge("start_Time", startOfDay) +// .le("end_Time", endOfDay) +// .orderByAsc("start_Time")); +// record.setStartTimeLong(0L); +// record.setEndTimeLong(24L * 60 * 60); +// List urls = cameraRecordDuoji.stream() +// .map(cameraRecordDuoji1 -> { +// Record r = new Record(); +// r.setUrl( "/"+configProperties.getS3Config().getBucketName() +"/"+cameraRecordDuoji1.getPath() +".mp4"); +// r.setStartTimeLong(toSecondsSinceMidnight(cameraRecordDuoji1.getStartTime())); +// r.setEndTimeLong(toSecondsSinceMidnight(cameraRecordDuoji1.getEndTime())); +// return r; +// }) +// .collect(Collectors.toList()); +// record.setUrls(urls); +// +// return new Result<>(record); +// } +//// +//// @PostMapping("/convetor") +//// @ApiOperation(value = "视频转换 ") +//// @LicenseHandler +//// public Result convetor(@RequestBody Record record) { +//// String url = record.getUrl().replace(".mp4","").replace("/"+configProperties.getS3Config().getBucketName() ,"").substring(1); +//// // 文件或目录的路径 +//// String filePath =configProperties.getS3Config().getUrlCache() +url+".mp4"; +//// // 创建一个File对象 +//// File file = new File(filePath); +//// if(file.exists()){ +//// return new Result<>(true); +//// }else { +//// s3Utils.downloadFile(configProperties.getS3Config().getBucketName(), url, configProperties.getS3Config().getUrlCache() + url); +//// HikCameraControlModuleImpl.convetor(configProperties.getS3Config().getUrlCache() + url, filePath); +//// return new Result<>(true); +//// } +//// } +// @PostMapping("/1") +// @ApiOperation(value = "视频转换 ") +// @LicenseHandler +// public Result booleanResult(@RequestBody Record record) { +// return new Result<>(true); +// } +// private static long toSecondsSinceMidnight(LocalDateTime dateTime) { +// LocalDateTime midnight = dateTime.toLocalDate().atStartOfDay(); +// Duration duration = Duration.between(midnight, dateTime); +// return duration.getSeconds(); +// } +// +// public static void main(String[] args) { +// +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-dd"); +// +// LocalDate today = LocalDate.parse("2024-8-6", formatter); +// System.out.printf(today.toString()); +// } } diff --git a/web/src/main/java/com/leaper/web/lib/hik/HikLoginModuleImpl.java b/web/src/main/java/com/leaper/web/lib/hik/HikLoginModuleImpl.java index 8d1808d..1fe967b 100644 --- a/web/src/main/java/com/leaper/web/lib/hik/HikLoginModuleImpl.java +++ b/web/src/main/java/com/leaper/web/lib/hik/HikLoginModuleImpl.java @@ -101,15 +101,18 @@ public class HikLoginModuleImpl implements CameraControlLoginModule { //byStartDChan为IP通道起始通道号, 预览回放NVR的IP通道时需要根据起始通道号进行取值 int tryTimes = 0; - while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){ +// while(m_lUserID < 0 && tryTimes < MAX_RECONNET_TIME){ +// log.error("hik login error,ip:{},port:{},errorCode:{}",m_strIp,m_nPort,hcNetsdk.NET_DVR_GetLastError()); +// try { +// Thread.sleep(500); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo); +// tryTimes ++; +// } + if(m_lUserID < 0){ log.error("hik login error,ip:{},port:{},errorCode:{}",m_strIp,m_nPort,hcNetsdk.NET_DVR_GetLastError()); - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } - m_lUserID = hcNetsdk.NET_DVR_Login_V40(m_strLoginInfo,m_strDeviceInfo); - tryTimes ++; } if(m_lUserID >= 0){ log.info("hik login success"); diff --git a/web/src/main/java/com/leaper/web/service/CameraService.java b/web/src/main/java/com/leaper/web/service/CameraService.java index 2e79e70..9c40b37 100644 --- a/web/src/main/java/com/leaper/web/service/CameraService.java +++ b/web/src/main/java/com/leaper/web/service/CameraService.java @@ -118,7 +118,8 @@ public class CameraService { ExecutorService executor = Executors.newFixedThreadPool(20); public PageInfo cameras(StreetSearch streetSearch) { PageHelper.startPage(streetSearch.getPageNum(), streetSearch.getPageSize()); - List cameras = cameraMapper.selectList(new QueryWrapper().eq(streetSearch.getChannel()!=null ,"channel",streetSearch.getChannel())); + List cameras = cameraMapper.selectList(new QueryWrapper() + .eq(streetSearch.getChannel()!=null ,"channel",streetSearch.getChannel())); if(cameras.size() > 0){ CountDownLatch latch = new CountDownLatch(cameras.size()); cameras.forEach(camera -> { @@ -131,40 +132,6 @@ public class CameraService { e.printStackTrace(); } } -// List> futureTasks = new ArrayList<>(); -// for(Camera camera : cameras){ -// -// FutureTask futureTask = new FutureTask<>(() -> { -// Boolean ok = false; -// if(CameraConnMap.getConnId(camera.getId())!=null){ -// if (configProperties.getCameraConfig().getCameraType() == ConfigProperties.HIK_CAMERA) { -// -// ok = HikLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId()).intValue()); -// } else { -// ok = JoywareLoginModuleImpl.connectStatus(CameraConnMap.getConnId(camera.getId())); -// } -// } -// if (ok) { -// camera.setStatus("连接正常"); -// } else { -// //CameraConnMap.disConn(camera.getId()); -// camera.setStatus("未连接"); -// cameraLogin(camera); -// } -// return ok; -// }); -// futureTasks.add(futureTask); -// executor.execute(futureTask); -// } -// for (Future f :futureTasks){ -// try { -// f.get(); -// } catch (InterruptedException e) { -// throw new RuntimeException(e); -// } catch (ExecutionException e) { -// throw new RuntimeException(e); -// } -// } return new PageInfo<>(cameras); } diff --git a/web/src/main/java/com/leaper/web/service/CronTab.java b/web/src/main/java/com/leaper/web/service/CronTab.java index bb9bc74..4f47feb 100644 --- a/web/src/main/java/com/leaper/web/service/CronTab.java +++ b/web/src/main/java/com/leaper/web/service/CronTab.java @@ -13,7 +13,6 @@ import com.leaper.web.mapper.*; import com.leaper.web.service.damLightSource.JYDAMEquip; import com.leaper.web.service.damLightSource.JYDamHelper; import com.leaper.web.service.hikLightSource.HikControlSocket; -import com.leaper.web.task.S3Utils; import lombok.extern.slf4j.Slf4j; import net.schmizz.sshj.sftp.SFTPClient; import org.springframework.scheduling.annotation.EnableScheduling; @@ -95,29 +94,28 @@ public class CronTab { } } - - /** - * 递归地清除指定目录下的所有文件和子目录。 s3服务 - * - * @param directory 要清除的目录路径 - */ - @Scheduled(cron = "15 0 0 * * ?") - public void clearDirectoryRecursively() { - File directory = new File(configProperties.getS3Config().getUrlCache()); - if (directory.exists() && directory.isDirectory()) { - File[] files = directory.listFiles(); - if (files != null) { - for (File file : files) { - if (file.isDirectory()) { - // 递归调用此方法来清除子目录 - clearDirectoryRecursively(file); - } - // 删除文件或空目录 - file.delete(); - } - } - } - } +// +// /** +// * 递归地清除指定目录下的所有文件和子目录。 s3服务 +// * +// */ +// @Scheduled(cron = "15 0 0 * * ?") +// public void clearDirectoryRecursively() { +// File directory = new File(configProperties.getS3Config().getUrlCache()); +// if (directory.exists() && directory.isDirectory()) { +// File[] files = directory.listFiles(); +// if (files != null) { +// for (File file : files) { +// if (file.isDirectory()) { +// // 递归调用此方法来清除子目录 +// clearDirectoryRecursively(file); +// } +// // 删除文件或空目录 +// file.delete(); +// } +// } +// } +// } public static void clearDirectoryRecursively(File directory) { if (directory.exists() && directory.isDirectory()) { File[] files = directory.listFiles(); @@ -134,49 +132,47 @@ public class CronTab { } } @Resource - S3Utils s3Utils; - @Resource CameraRecordDuojiMapper cameraRecordDuojiMapper; @Resource CameraControlModule cameraControlModule; - - /** - * 每分钟下载前两分钟的文件 - */ - @Scheduled(cron = "5 0/1 * * * ? ") - //@Scheduled(cron = "0 0/1 * * * *") - public void s3DownloadFile() { - List cameras = cameraMapper.selectList(new QueryWrapper<>()); - LocalDate currentDate = LocalDate.now(); // 获取当前日期 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 设置日期格式 - LocalDateTime now = LocalDateTime.now(); - //结束时间 - LocalDateTime currentMinuteStart = now.minusMinutes(2).withSecond(0).withNano(0); - //开始时间 - LocalDateTime previousMinuteStart = now.minusMinutes(3).withSecond(0).withNano(0); - String formattedDate = currentDate.format(formatter); - for (Camera camera : cameras){ - if(camera.getChannel() != 1){ - continue; - } - String url = formattedDate + "/" +UUID.randomUUID(); - boolean ok =cameraControlModule.downloadMp4Stream(camera.getId(), "D:\\" + url, previousMinuteStart, currentMinuteStart, camera.getChannel()); - if(ok) { - File file = new File("D:\\" + url); - s3Utils.uploadFile(configProperties.getS3Config().getBucketName(), url, file); - CameraRecordDuoji cameraRecordDuoji = new CameraRecordDuoji(); - cameraRecordDuoji.setCameraId(camera.getId()); - cameraRecordDuoji.setPath(configProperties.getS3Config().getBucketName()+ "/" +url); - cameraRecordDuoji.setStartTime(previousMinuteStart); - cameraRecordDuoji.setEndTime(currentMinuteStart); - cameraRecordDuoji.setPath(url); - cameraRecordDuojiMapper.insert(cameraRecordDuoji); - - file.delete(); - } - } - } +// +// /** +// * 每分钟下载前两分钟的文件 +// */ +// @Scheduled(cron = "5 0/1 * * * ? ") +// //@Scheduled(cron = "0 0/1 * * * *") +// public void s3DownloadFile() { +// List cameras = cameraMapper.selectList(new QueryWrapper<>()); +// LocalDate currentDate = LocalDate.now(); // 获取当前日期 +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 设置日期格式 +// LocalDateTime now = LocalDateTime.now(); +// //结束时间 +// LocalDateTime currentMinuteStart = now.minusMinutes(2).withSecond(0).withNano(0); +// //开始时间 +// LocalDateTime previousMinuteStart = now.minusMinutes(3).withSecond(0).withNano(0); +// String formattedDate = currentDate.format(formatter); +// for (Camera camera : cameras){ +// if(camera.getChannel() != 1){ +// continue; +// } +// String url = formattedDate + "/" +UUID.randomUUID(); +// boolean ok =cameraControlModule.downloadMp4Stream(camera.getId(), "D:\\" + url, previousMinuteStart, currentMinuteStart, camera.getChannel()); +// if(ok) { +// File file = new File("D:\\" + url); +// s3Utils.uploadFile(configProperties.getS3Config().getBucketName(), url, file); +// CameraRecordDuoji cameraRecordDuoji = new CameraRecordDuoji(); +// cameraRecordDuoji.setCameraId(camera.getId()); +// cameraRecordDuoji.setPath(configProperties.getS3Config().getBucketName()+ "/" +url); +// cameraRecordDuoji.setStartTime(previousMinuteStart); +// cameraRecordDuoji.setEndTime(currentMinuteStart); +// cameraRecordDuoji.setPath(url); +// cameraRecordDuojiMapper.insert(cameraRecordDuoji); +// +// file.delete(); +// } +// } +// } @Scheduled(cron = "0 * * * * ?") diff --git a/web/src/main/java/com/leaper/web/task/S3Utils.java b/web/src/main/java/com/leaper/web/task/S3Utils.java deleted file mode 100644 index 4ced3bd..0000000 --- a/web/src/main/java/com/leaper/web/task/S3Utils.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.leaper.web.task; - -import com.amazonaws.ClientConfiguration; -import com.amazonaws.Protocol; -import com.amazonaws.SdkClientException; -import com.amazonaws.auth.AWSCredentials; -import com.amazonaws.auth.AWSStaticCredentialsProvider; -import com.amazonaws.auth.BasicAWSCredentials; -import com.amazonaws.client.builder.AwsClientBuilder; -import com.amazonaws.regions.Regions; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.AmazonS3Client; -import com.amazonaws.services.s3.AmazonS3ClientBuilder; -import com.amazonaws.services.s3.model.GetObjectRequest; -import com.amazonaws.services.s3.model.ObjectMetadata; -import com.amazonaws.services.s3.model.PutObjectResult; -import com.amazonaws.services.s3.model.S3Object; -import com.amazonaws.services.s3.model.S3ObjectInputStream; -import com.amazonaws.services.s3.transfer.internal.TransferManagerUtils; -import com.amazonaws.util.IOUtils; -import com.amazonaws.util.json.Jackson; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.concurrent.ExecutorService; -import java.util.logging.Logger; - -public class S3Utils { - - private static final Logger LOGGER = Logger.getLogger("S3Utils"); - /** - * S3客户端接口 - */ - public AmazonS3 s3; - - /** - * 用作分片并行上传下载异步任务执行线程;该示例客户端实例上调用的并行上传下载异步任务都提交到此执行线程运行,请合理设置该执行线程的线程池大小;或者并行上传下载方法单独创建异步任务执行线程; - */ - private ExecutorService executorService; - - /** - * 客户端初始化 - * @param accessKey AK - * @param secretKey SK - * @param host endpoint S3服务地址 - */ - public void init(String accessKey, String secretKey, String host) { - AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); - ClientConfiguration config = new ClientConfiguration(); - config.setProtocol(Protocol.HTTP); - //config.setRetryPolicy(PredefinedRetryPolicies.NO_RETRY_POLICY); - // 凭证验证方式 - config.setSignerOverride("S3SignerType"); - config.setSocketTimeout(180000); - config.setMaxConnections(50); - config.setConnectionTimeout(10000); - // 创建S3客户端,使用完需要关闭((AmazonS3Client) s3).shutdown(); - s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)) - .withClientConfiguration(config) - .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(host, Regions.US_EAST_1.getName())).enablePathStyleAccess().build(); - //创建默认线程(10个固定线程)执行器,使用分片并行传输时用作执行线程,可以根据自己需求实现执行器。 - executorService = TransferManagerUtils.createDefaultExecutorService(); - } - - /** - * 客户端销毁 - */ - public void destroy() { - executorService.shutdown(); - ((AmazonS3Client) s3).shutdown(); - } - - /** - * 上传对象 - * @param bucketName 桶名称 - * @param fileName 对象名称,图片名称 - * @param file 文件 - */ - public PutObjectResult uploadFile(String bucketName, String fileName, File file) { - PutObjectResult putObjectResult = s3.putObject(bucketName, fileName, file); - LOGGER.info(Jackson.toJsonPrettyString(putObjectResult)); - LOGGER.info("upload object " + fileName + " success."); - return putObjectResult; - } - - /** - * 下载对象 - * @param bucketName bucket名称 - * @param key 对象名称 - * @param destinationFile 存储为本地的目标文件名 - */ - public ObjectMetadata downloadFile(String bucketName, String key, String destinationFile) { - GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); - ObjectMetadata objectMetadata = s3.getObject(getObjectRequest, new File(destinationFile)); - LOGGER.info(Jackson.toJsonPrettyString(objectMetadata)); - LOGGER.info("download object " + key + " success."); - return objectMetadata; - } - - /** - * 上传流对象 - * @param bucketName bucket名称 - * @param key 对象名称 - * @param inputStream 上传内容 - * @param objectMetadata 上传内容元数据,Content-Length必须设置 - */ - public PutObjectResult uploadStream(String bucketName, String key, InputStream inputStream, ObjectMetadata objectMetadata) { - PutObjectResult putObjectResult = s3.putObject(bucketName, key, inputStream, objectMetadata); - LOGGER.info(Jackson.toJsonPrettyString(putObjectResult)); - LOGGER.info("upload object " + key + " success."); - return putObjectResult; - } - - /** - * 下载对象到流 - * @param bucketName bucket名称 - * @param key 对象名称 - * @param out 输出流 - */ - public ObjectMetadata downloadStream(String bucketName, String key, OutputStream out) { - GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key); - S3Object s3Object = s3.getObject(getObjectRequest); - ObjectMetadata objectMetadata = s3Object.getObjectMetadata(); - S3ObjectInputStream in = s3Object.getObjectContent(); - try { - IOUtils.copy(in, out); - } catch (IOException e) { - throw new SdkClientException(e); - } finally { - IOUtils.release(in, null); - } - LOGGER.info(Jackson.toJsonPrettyString(objectMetadata)); - LOGGER.info("download object " + key + " success."); - return objectMetadata; - } -} diff --git a/web/src/main/java/com/leaper/web/task/S3UtilsTest.java b/web/src/main/java/com/leaper/web/task/S3UtilsTest.java deleted file mode 100644 index 1796b85..0000000 --- a/web/src/main/java/com/leaper/web/task/S3UtilsTest.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.leaper.web.task; - -import com.amazonaws.services.s3.model.ObjectMetadata; - -import org.junit.Before; -import org.junit.Test; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.logging.Logger; - -public class S3UtilsTest { - - private static final Logger LOGGER = Logger.getLogger("S3Utils"); - - private static final String ACCESS_KEY = "minio"; - private static final String SECRET_KEY = "minio123"; - // 桶所在的区域对应网关URL的域名地址 - private static final String HOST = "192.168.1.52:9000"; - private static final String BUCKET_NAME = "camera"; - - private S3Utils s3Utils; - - @Before - public void init() { - s3Utils = new S3Utils(); - s3Utils.init(ACCESS_KEY, SECRET_KEY, HOST); - } - - /** - * 上传文件到桶中的根目录(不推荐) - */ - - /** - * 注意1:现场的网段可能属于生产的网络,demo中提供的HOST属于测试环境,公司策略无法从生产网络访问测试环,会导致连接超时 - * 注意2:需要开通现场服务器到S3服务器的80和443端口防火墙 - * - * 上传文件到桶中的指定目录(推荐) wcs-ocr-pic目录名 - */ - @Test - public void testUploadFile() { - s3Utils.uploadFile(BUCKET_NAME, "wcs-ocr-pic/1.png", new File("C:\\Users\\昊天\\Pictures\\2.jpg")); - // A目录下的B目录下的C对象 a/b/c - } - - /** - * 注意1:现场的网段可能属于生产的网络,demo中提供的HOST属于测试环境,公司策略无法从生产网络访问测试环,会导致连接超时 - * 注意2:需要开通现场服务器到S3服务器的80和443端口防火墙 - * - * 下载文件到指定目录 : 下载桶中的test.png 到D盘,且重新命名为aa.png - */ - @Test - public void testDownloadFile() { - s3Utils.downloadFile(BUCKET_NAME, "wcs-ocr-pic/1.png", "C:\\Users\\昊天\\Pictures\\2.jpg"); - } - - /** - * 上传流对象 - */ - @Test - public void testUploadStream() { - File file = new File("D:\\pic\\test.png"); - InputStream inputStream = null; - try { - inputStream = new FileInputStream(file); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - if (inputStream != null) { - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentLength(file.length()); - s3Utils.uploadStream(BUCKET_NAME, "wcs-ocr-pic/2.png", inputStream, objectMetadata); - try { - inputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /** - * 下载对象到流 - */ - @Test - public void testDownloadStream() { - OutputStream out = null; - try { - out = new FileOutputStream(new File("C:\\Users\\昊天\\Pictures\\2.jpg")); - s3Utils.downloadStream(BUCKET_NAME, "bg3.png", out); - } catch (FileNotFoundException e) { - } finally { - if (out != null) { - try { - out.close(); - } catch (IOException e) { - } - } - } - } -}