增加s3对象存储demo

dongguan-huaweiyun
LAPTOP-S9HJSOEB\昊天 2 years ago
parent 4dbd8cc6d7
commit b206c32c48

@ -84,7 +84,16 @@
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/jna.jar</systemPath>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.12.269</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>com.sun.jna.examples</groupId>
<artifactId>test</artifactId>

@ -351,8 +351,7 @@ public class CameraControlController {
@ApiOperation(value = "录像")
public Result MP4delay(@PathVariable Integer id) {
//checkLogin(id);
plcService.cameraVideo(1,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(id),LocalDateTime.now().plusSeconds(3));
plcService.cameraVideo(2,LocalDateTime.now().minusSeconds(3*60),LocalDateTime.now().plusSeconds(2*60));
/*String path = PathUtil.createFileName("mp4",id);
String realPath = configProperties.getSavePath().getMp4Path() + path;
TaskDelayExecutor.addMp4DelayTask(id,realPath,LocalDateTime.now().minusMinutes(2),LocalDateTime.now().minusSeconds(7),12000L);*/

@ -281,6 +281,7 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
}
public void downloadMp4(Integer cameraId, String path, LocalDateTime start, LocalDateTime end, ConfigProperties.SavePath savePath,Integer channel) {
PathUtil.checkDirc(path);

@ -0,0 +1,138 @@
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 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;
}
}

@ -0,0 +1,105 @@
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,demoHOST访
* 2S380443
*
* () 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,demoHOST访
* 2S380443
*
* test.png Daa.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) {
}
}
}
}
}

@ -0,0 +1,4 @@
package com.leaper.web.task;
public class T {
}
Loading…
Cancel
Save