數據,文件的存儲:
- 數據(MySQL)
- 數據(MySQL)+ 文件(本地:IO流)
- 數據(MySQL)+ 緩存(Redis)+文件(服務器集群上,fastDFS(集群),Hdfs(大數據))
- 數據(MySQL)+ 緩存(Redis)+文件(OSS)
OSS 就是為了解決海量數據存儲和彈性擴容,我們就可以采用阿里雲OSS。
1、開通服務(免費開通)
2、Bucket 庫
- 點擊創建Bucket
- 填寫Bucket名稱及區域
- 注:我這里區域選的是杭州,因為當時買服務器的時候,我是選的杭州區域,贈送的OSS包月資源包,當然也可以按流量計費,個人測試的話幾塊錢可以搞定。
3、注意:使用子權限——安全
- 點擊訪問控制
- 創建用戶
- 創建用戶組
- 用戶組權限設置
- 將用戶添加到用戶組
- 保存賬戶信息
4、測試API
- 找到官方文檔
- 測試
1 package com.coding.aliyun; 2 3 import com.aliyun.oss.OSS; 4 import com.aliyun.oss.OSSClientBuilder; 5 import com.aliyun.oss.model.CannedAccessControlList; 6 import com.aliyun.oss.model.GetObjectRequest; 7 import com.aliyun.oss.model.ObjectMetadata; 8 import org.junit.Test; 9 10 import java.io.*; 11 12 // 詳細步驟請參照官方文檔,詳細步驟請參照官方文檔,詳細步驟請參照官方文檔 13 public class OSSTest { 14 // Endpoint以杭州為例,其它Region請按實際情況填寫。 15 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; 16 // 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。 17 String accessKeyId = "LTAI4Fcy4XxxxxxQR4"; 18 String accessKeySecret = "spI0CUXTDxxxxxxxYsf4lmIaUdrIu"; 19 String bucketName = "vin955"; 20 23 @Test 24 public void testCreate(){ 25 // 創建OSSClient實例。 26 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); 27 28 boolean exists = ossClient.doesBucketExist(bucketName); 29 30 if (exists == false) { //判定是否存在此存儲空間 31 // 創建存儲空間。 32 ossClient.createBucket(bucketName); 33 } 34 35 // 設置存儲空間的訪問權限為私有。 36 ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead); 37 38 // 關閉OSSClient。 39 ossClient.shutdown(); 40 } 41 42 @Test 43 public void testCreate2(){ 44 // 創建OSSClient實例。 45 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); 46 47 // 上傳文件流。 48 InputStream inputStream = null; 49 try { 50 inputStream = new FileInputStream("C:\\Users\\heng\\Desktop\\ava.png"); 51 } catch (FileNotFoundException e) { 52 e.printStackTrace(); 53 } 54 55 ossClient.putObject(bucketName, "ava/aaa.png", inputStream); 56 57 // 關閉OSSClient。 58 ossClient.shutdown(); 59 } 60 63 @Test 64 public void testCreate3() throws IOException { 65 // 創建OSSClient實例。 66 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); 67 68 String objectName = "ava/aaa.png"; 69 70 // ossObject包含文件所在的存儲空間名稱、文件名稱、文件元信息以及一個輸入流。 71 // OSSObject ossObject = ossClient.getObject(bucketName, objectName); 72 ObjectMetadata ossObject = ossClient.getObject(new GetObjectRequest(bucketName, objectName),new File("a.png")); 73 74 75 // 關閉OSSClient。 76 ossClient.shutdown(); 77 } 78 79 80 @Test 81 public void testCreate4() throws IOException { 82 // 創建OSSClient實例。 83 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); 84 85 86 String objectName = "ava/aaa.png"; 87 // 刪除文件。如需刪除文件夾,請將ObjectName設置為對應的文件夾名稱。如果文件夾非空,則需要將文件夾下的所有object刪除后才能刪除該文件夾。 88 ossClient.deleteObject(bucketName, objectName); 89 90 ossClient.shutdown(); 91 } 92 93 }