Springboot項目之阿里雲OSS快速入門


阿里雲oss

阿里雲對象存儲服務(Object Storage Service,簡稱OSS),是阿里雲對外提供的海量、安全、低成本、高可靠的雲存儲服務。您可以通過本文檔提供的簡單的REST接口,在任何時間、任何地點、任何互聯網設備上進行上傳和下載數據。基於OSS,您可以搭建出各種多媒體分享網站、網盤、個人和企業數據備份等基於大規模數據的服務。

購買

這里就不用多說了上鏈接直接 https://www.aliyun.com/product/oss?spm=5176.19720258.J_2686872250.2.5e052c4aqm9WSD

購買開通 控制台https://oss.console.aliyun.com/overview

配置oss

開通后進入阿里雲oss 控制台

 

 

 創建一個Bucket 然后進入AccessKey 創建一個AccessKey 並記錄號他的AccessKey ID和secret

 

編寫Java代碼

1. 導入依賴

<!--阿里雲oss-->
<dependency>
   <groupId>com.aliyun.oss</groupId>
   <artifactId>aliyun-sdk-oss</artifactId>
   <version>3.8.0</version>
</dependency>

2.配置(yml)

aliyun:
  oss:
    file:
      keyid:             這里就是Accesskey下的兩個值
      keysecret: 
      bucketname:        這里是創建Bucket的名字和外網的地域節點
      endpoint: oss-cn-xxxx.aliyuncs.com

3.編寫工具類

@Component
@PropertySource("classpath:application.yml")
public class OssProperies implements InitializingBean {
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;
    @Value("${aliyun.oss.file.keyid}")
    private String keyId;
    @Value("${aliyun.oss.file.keysecret}")
    private String keysecret;
    @Value("${aliyun.oss.file.bucketname}")
    private String bucketname;
public static String END_POINT; public static String ACCESS_KEY_ID; public static String ACCESS_KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POINT = endpoint; ACCESS_KEY_ID = keyId; ACCESS_KEY_SECRET = keysecret; BUCKET_NAME = bucketname; } }

4.Service

public interface OssService {
    String uploadFile (MultipartFile file) throws Exception;
}

5.ServiceImpl

@Service
public class OssServiceImpl implements OssService {
    @Override
    public String uploadFile(MultipartFile file) throws Exception {
        //讀取工具類的數據
        String endpoint = OssProperies.END_POINT;
        String accessKeyId = OssProperies.ACCESS_KEY_ID;
        String accessKeySecret = OssProperies.ACCESS_KEY_SECRET;
        String bucketName = OssProperies.BUCKET_NAME;
        //連接oss客戶端
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上傳文件流
        InputStream inputStream = file.getInputStream();
        //這里最好對文件路徑或名字做一下處理,防止文件名或路徑重復導致文件丟失或者被覆蓋
        String url ="xxx/xxx/"+file.getOriginalFilename();
        //上傳
        ossClient.putObject(bucketName, url, inputStream);
        // 關閉OSSClient。
        ossClient.shutdown();
        return "https://"+bucketName+"."+endpoint+"/"+url;
    }
}

6.文件名路徑防止重復的幾種方式

    a.日期時間,可以將以下值合理的拼接到路徑或者文件名上

      Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int date = c.get(Calendar.DATE);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);
        int second = c.get(Calendar.SECOND);

  b.通過隨機數拼接文件名

UUID.randomUUID().toString()+"_"+fileName;

  其他方法自行摸索,只要你的小腦袋還能動,你一定可以想到更好的方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM