對象存儲是根據AmazonS3來做的封裝,主要功能 :文件的上傳下載 生成鏈接 對圖片的處理 查看桶內對象等一系列的操作。
本文主要做的是文件的上傳下載生成鏈接以及前期的准備工作 以springboot項目為例。
首先先去開通官網開通對象存儲服務,會給你accessKey 和 secretKey 兩個密鑰,
請求的地址也會給你 也就是網址
然后在后台創建一個桶 或者也可以代碼創建,記住桶的名字,這個桶的概念相當於創建了一塊屬於你的存儲空間,可以向里面存儲
也可以去找他們客服去要sdk
拿到jar包引入到springboot項目中
在src同級目錄創建libs文件夾
點擊設置 假如libs文件夾
配置pom
<dependency> <groupId>speedycloud</groupId> <artifactId>speedycloud
-sdk-mns</artifactId> <version>1.1.8</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/speedycloud
-sdk-mns-1.1.8.jar</systemPath> </dependency>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> </plugins> </build>
允許打包
如果是是私服maven的話可以省略這兩部 直接上傳jar到maven
建立連接
private static synchronized AmazonS3 s3Client() {
BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration clientConfig = new ClientConfiguration();
clientConfig.setSignerOverride("S3SignerType");//憑證驗證方式
clientConfig.setProtocol(Protocol.HTTP);//訪問協議
return AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withClientConfiguration(clientConfig)
.withEndpointConfiguration(
new AwsClientBuilder.EndpointConfiguration(//設置要用於請求的端點配置(服務端點和簽名區域)
speedyURL,//我的網址
(Regions.CN_NORTH_1).toString())).withPathStyleAccessEnabled(true)//是否使用路徑方式
.build();
}
s3Client().putObject(new PutObjectRequest(bucket,"ppo"+Thread.currentThread().getName(),file));
上傳文件
可以以文件的方式和流的方式上傳 以流的方式上傳注意設置datamate 的上傳報文如上傳pdf文件
metadata.setContentType(“application/pdf”);
URL objectUrl = s3Client().generatePresignedUrl(new GeneratePresignedUrlRequest(BUCKET_NAME, key));
返回文件連接
S3Object object = s3Client().getObject(new GetObjectRequest(BUCKET_NAME, key));
下載文件(流)
所有的創建連接都是線程不安全的 注意並發問題
結束