一、OSS介紹
OSS,全稱 Object Storage Service,是阿里雲提供的一種海量、安全、低成本、高可靠的雲存儲服務。可以用來存儲和處理各種非結構化數據(如圖片、音頻、視頻、日誌等)。本文主要介紹如何利用OSS進行文件上傳。
二、概述
本文主要講解基於阿里雲OSS和阿里雲SDK進行文件上傳的相關操作。其中,我們需要了解的操作包括:
1.創建OSSClient實例
2.創建Bucket
3.上傳文件
三、創建OSSClient實例
使用阿里雲SDK進行操作,我們需要先創建一個OSSClient實例,代碼如下:
public OSS createOSSClient() { String endpoint = ""; String accessKeyId = ""; String accessKeySecret = ""; String bucketName = ""; // 創建OSSClient實例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); return ossClient; }
其中,需要傳入Endpoint、AccessKeyId、AccessKeySecret和BucketName。
四、創建Bucket
上傳文件之前,我們需要創建一個Bucket用於存儲文件。創建Bucket的代碼如下:
public void createBucket() { // 創建OSSClient實例。 OSS ossClient = createOSSClient(); String bucketName = ""; if (!ossClient.doesBucketExist(bucketName)) { ossClient.createBucket(bucketName); } // 關閉OSSClient。 ossClient.shutdown(); }
其中,我們需要判斷Bucket是否已經存在,如果不存在就創建一個Bucket。
五、上傳文件
上傳文件時,我們需要先創建PutObjectRequest對象,然後使用OSSClient實例的putObject方法進行上傳。代碼如下:
public void uploadFile() { // 創建OSSClient實例。 OSS ossClient = createOSSClient(); String bucketName = ""; String objectName = ""; String filePath = ""; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath)); ossClient.putObject(putObjectRequest); // 關閉OSSClient。 ossClient.shutdown(); }
其中,需要傳入BucketName、ObjectName和文件路徑。
六、上傳進度
上傳大文件時,可能需要顯示上傳進度。我們可以通過實現PutObjectRequest的ProgressListener介面來實現上傳進度的回調。代碼如下:
public void uploadFileWithProgress() { // 創建OSSClient實例。 OSS ossClient = createOSSClient(); String bucketName = ""; String objectName = ""; String filePath = ""; File file = new File(filePath); // 設置分片大小,100M(默認為100K)。 final int partSize = 100 * 1024 * 1024; PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, file); putObjectRequest.setPartSize(partSize); // 設置上傳進度回調。 putObjectRequest.setProgressListener(new ProgressListener() { @Override public void progressChanged(ProgressEvent progressEvent) { switch (progressEvent.getEventType()) { case TRANSFER_STARTED_EVENT: System.out.println("開始上傳..."); break; case REQUEST_CONTENT_LENGTH_EVENT: System.out.println("上傳文件大小為:" + progressEvent.getBytes()); break; case REQUEST_BYTE_TRANSFER_EVENT: System.out.println("已上傳:" + progressEvent.getBytes()); break; case TRANSFER_COMPLETED_EVENT: System.out.println("上傳完成!"); break; case TRANSFER_FAILED_EVENT: System.out.println("上傳失敗!"); break; default: break; } } }); ossClient.putObject(putObjectRequest); // 關閉OSSClient。 ossClient.shutdown(); }
其中,我們需要設置分片大小並實現ProgressListener介面。
七、小結
以上就是使用阿里雲OSS和阿里雲SDK進行文件上傳的相關操作。需要注意的是,上傳文件時需要先創建OSSClient實例和Bucket。上傳大文件時,可以使用分片上傳和上傳進度回調功能。希望對大家有所幫助!
原創文章,作者:VAWPZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361191.html