從零開始使用阿里云OSS服務(白嫖)
# 阿里云對象存儲服務OSS使用記錄
1 新人免費開通OSS服務
-
訪問 阿里云官網,登錄賬號(個人新用戶賬號),首頁搜索 對象存儲OSS,點擊下方的直達。

-
點擊立即開通,此時會在一個新網頁中完成開通

-
完成開通后,回到原來的網頁,點擊下方的新人特惠,會跳轉到本頁的下方。


-
根據登錄的賬號是個人新用戶,還是企業新用戶,可以免費試用三個月。由于我這里是個人新用戶,以下操作都為個人新用戶的操作。

-
點擊上圖第一個的立即購買,會跳出詳情頁面,一般默認即可。

-
點擊立即購買,跳轉到確認訂單頁面,點擊去支付,完成支付。


-
如果提示未完成協議簽署,則點擊簽署并下單

-
完成支付后,會出現支付成功的界面

-
點擊其中管理控制臺,跳轉到對象存儲的管理臺界面,點擊資源包管理,可以看到剛剛購買成功的資源包。

至此,獲得了可以白嫖三個月的OSS服務。
2 使用OSS服務
-
創建一個新的Bucket,并作如下設置



注意:此處的存儲類型選擇為標準存儲,因為剛獲得的資源包是標準存儲包
-
手動上傳一個文件,測試一下


提示上傳成功。
在文件列表中,找到上傳圖片的詳情,點擊

出現詳情頁面,在瀏覽器中輸入該URL,如果能出現下載界面則證明能成功訪問。

-
參考文檔,根據參考文檔在Java應用中使用OSS
3 在Java中使用OSS
-
安裝依賴
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.1</version> </dependency> -
根據文檔,寫圖片上傳的Controller方法,通過swagger測試
注意:把代碼中的 * 修改成自己賬號對應的值
package com.sun.controller; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.GetObjectRequest; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; @RestController @RequestMapping("/oss") @Api(value = "test oss", tags = "test oss") public class OssTest { @PostMapping("/upload") @ApiOperation("upload file test") public void upload(MultipartFile file) { // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。 String endpoint = "***"; // 阿里云賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創建RAM用戶。 String accessKeyId = "***"; String accessKeySecret = "***"; // 填寫Bucket名稱,例如examplebucket。 String bucketName = "***"; // 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱。 String objectName = "13213213exampleobject.jpg"; // 圖片上傳之后的名字 // 填寫本地文件的完整路徑,例如D:\\localpath\\example-resize.jpg。如果指定的本地文件存在會覆蓋,不存在則新建。 String localPath = "C:\\Users\\admin\\Desktop\\Services\\weizhi1.jpg"; // 要上傳的本地文件的地址 // 創建OSSClient實例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { InputStream inputStream = new FileInputStream(localPath); // 圖片輸入流 // 創建PutObjectRequest對象。 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); // 設置該屬性可以返回response。如果不設置,則返回的response為空。 putObjectRequest.setProcess("true"); // 創建PutObject請求。 PutObjectResult result = ossClient.putObject(putObjectRequest); // 如果上傳成功,則返回200。 System.out.println(result.getResponse().getStatusCode()); } 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()); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (ossClient != null) { ossClient.shutdown(); } } } } -
啟動項目,在swagger中測試

控制臺輸出200,表示上傳圖片操作成功。

登錄管理臺查看,文件確實上傳成功了。
4 總結
-
在Java程序中使用OSS服務需要提供
endpoint、accessKeyId、accessKeySecret、bucketName四個量。前三個用于創建ossclient對象,OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);,最后一個用于確定上傳的圖片放在哪個bucketname下邊。 -
需要先構造一個PutObjectRequest或者GetObjectRequest,然后通過ossclient調用putObject(put請求)/getObject(get請求)。
-
// 創建 put請求 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); // 調用這個put請求,返回請求的result結果 PutObjectResult result = ossClient.putObject(putObjectRequest);
本文來自博客園,作者:永恒&,轉載請注明原文鏈接:http://www.rzrgm.cn/Sun-yuan/p/17128350.html

浙公網安備 33010602011771號