阿里云 OSS 介紹
阿里云對象存儲 OSS (Object Storage Service),是一款海量、安全、低成本、高可靠的云存儲服務(wù)。使用 OSS,你可以通過網(wǎng)絡(luò)隨時存儲和調(diào)用包括文本、圖片、音頻和視頻等在內(nèi)的各種文件。
準備工作
- 登錄阿里云后進入阿里云控制臺首頁選擇 對象存儲 OSS 服務(wù)
-
開通服務(wù)
-
創(chuàng)建Bucket
填寫 bucket 名稱 & 選存儲空間歸屬的地域 & 選擇讀寫權(quán)限為(公共讀)
4. 獲取密鑰
創(chuàng)建 AccessKey
保存 AccessKey ID 和 AccessKey Secret
SpringBoot 集成 OSS
可以參考 官網(wǎng) SDK 文檔
- 導(dǎo)入 maven 坐標
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun.sdk.oss}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api}</version>
</dependency>
如果是 Java 9 及以上版本,還需要導(dǎo)入其他坐標
- 在 yml 中添加配置
對應(yīng)的配置類
文章來源:http://www.zghlxwxcb.cn/news/detail-742068.html
- 編寫 AliOssUtil
@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
/**
* 文件上傳
*
* @param bytes
* @param objectName
* @return
*/
public String upload(byte[] bytes, String objectName) {
// 創(chuàng)建OSSClient實例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 創(chuàng)建PutObject請求。
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
} 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());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
//文件訪問路徑規(guī)則 https://BucketName.Endpoint/ObjectName
StringBuilder stringBuilder = new StringBuilder("https://");
stringBuilder
.append(bucketName)
.append(".")
.append(endpoint)
.append("/")
.append(objectName);
log.info("文件上傳到:{}", stringBuilder.toString());
return stringBuilder.toString();
}
}
- 配置 OSS Configuration
/**
* 配置類,用于創(chuàng)建AliOssUtil對象
*/
@Configuration
@Slf4j
public class OssConfiguration {
@Bean
@ConditionalOnMissingBean
public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
log.info("開始創(chuàng)建阿里云文件上傳工具類對象:{}", aliOssProperties);
return new AliOssUtil(aliOssProperties.getEndpoint(),
aliOssProperties.getAccessKeyId(),
aliOssProperties.getAccessKeySecret(),
aliOssProperties.getBucketName());
}
}
- 編寫通用上傳文件接口
/**
* 通用接口
*/
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {
@Autowired
private AliOssUtil aliOssUtil;
@PostMapping("/upload")
@ApiOperation("文件上傳")
public Result<String> upload(MultipartFile file){
log.info("文件上傳:{}", file);
try {
// 原始文件名
String originalFilename = file.getOriginalFilename();
// 后綴
String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
String objectName = UUID.randomUUID().toString() + extension;
// 文件的請求路徑
String filePath = aliOssUtil.upload(file.getBytes(), objectName);
return Result.success(filePath);
} catch (IOException e) {
log.error("文件上傳失?。簕}", e);
}
return Result.error(MessageConstant.UPLOAD_FAILED);
}
}
- 上傳文件到 OSS
從前端調(diào)用上面的上傳文件的接口,就可以將文件上傳到 OSS 上,并且獲取到訪問 OSS 文件路徑的 URL 地址。文章來源地址http://www.zghlxwxcb.cn/news/detail-742068.html
到了這里,關(guān)于SpringBoot集成-阿里云對象存儲OSS的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!