天天看點

雲端檔案管理:在 Java 中使用阿裡雲對象存儲 OSS

作者:愛做夢的程式員
雲端檔案管理:在 Java 中使用阿裡雲對象存儲 OSS

Java 是世界上最流行的程式設計語言之一,擁有着廣泛的應用場景和強大的生态系統。阿裡雲對象存儲 OSS 是一種企業級的雲存儲服務,它可以存儲各種類型的資料,并提供快速可靠的資料通路。本文将介紹如何在 Java 中使用阿裡雲對象存儲 OSS,并寫一點相應的代碼示例供大家參考。

一、開始之前

在使用阿裡雲對象存儲 OSS 之前,我們需要進行一些準備工作:

  • 建立阿裡雲賬号,并開通 OSS 服務。
  • 在控制台中建立一個 Bucket,并記錄 Bucket 的名稱、Endpoint、AccessKeyId 和 AccessKeySecret。
  • 下載下傳并安裝阿裡雲 SDK,然後在項目中添加相關依賴。
雲端檔案管理:在 Java 中使用阿裡雲對象存儲 OSS

二、上傳檔案

在 Java 中使用阿裡雲對象存儲 OSS 實作檔案上傳非常簡單,我們隻需要通過 OSSClient 對象調用相應的 API 即可。下面是一個示例代碼:

java複制代碼public static void uploadFile(String endpoint, String accessKeyId, String accessKeySecret, String bucketName, String objectName, String filePath) {
    // 建立 OSSClient 對象
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    try {
        // 判斷 Bucket 是否存在,如果不存在則建立
        if (!ossClient.doesBucketExist(bucketName)) {
            ossClient.createBucket(bucketName);
        }

        // 上傳檔案
        ossClient.putObject(bucketName, objectName, new File(filePath));

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 關閉 OSSClient
        ossClient.shutdown();
    }
}
           

在上面的代碼中,我們首先建立了一個 OSSClient 對象,然後判斷 Bucket 是否存在,如果不存在則建立。最後,我們通過 putObject 方法上傳檔案。

三、斷點續傳

如果需要上傳大檔案,我們可以使用斷點續傳來提高上傳的速度和可靠性。阿裡雲對象存儲 OSS 提供了分塊上傳和斷點續傳的功能,可以通過 OSSClient 對象調用相應的 API 來實作。下面是一個示例代碼:

java複制代碼public static void uploadBigFile(String endpoint, String accessKeyId, String accessKeySecret, String bucketName, String objectName, String filePath) {
    // 建立 OSSClient 對象
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    try {
        // 判斷 Bucket 是否存在,如果不存在則建立
        if (!ossClient.doesBucketExist(bucketName)) {
            ossClient.createBucket(bucketName);
        }

        // 設定分塊大小為1MB
        long partSize = 1024 * 1024L;

        // 初始化分塊上傳
        InitiateMultipartUploadResult initiateMultipartUploadResult = ossClient.initiateMultipartUpload(bucketName, objectName);

        // 擷取 UploadId
        String uploadId = initiateMultipartUploadResult.getUploadId();

        // 擷取檔案大小
        File file = new File(filePath);
        long fileSize = file.length();

        // 計算分塊數
        int partCount = (int) (fileSize / partSize);
        if (fileSize % partSize != 0) {
            partCount++;
        }

        // 初始化 PartETag 數組
        List<PartETag> partETags = new ArrayList<>();

        // 分塊上傳
        for (int i = 0; i < partCount; i++) {
            // 計算分塊大小和起始位置
            long startPos = i * partSize;
            long curPartSize = Math.min(partSize, fileSize - startPos);

            FileInputStream inputStream = new FileInputStream(file);
            inputStream.skip(startPos);

            // 上傳分塊
            UploadPartRequest uploadPartRequest = new UploadPartRequest();
            uploadPartRequest.setBucketName(bucketName);
            uploadPartRequest.setKey(objectName);
            uploadPartRequest.setUploadId(uploadId);
            uploadPartRequest.setInputStream(inputStream);
            uploadPartRequest.setPartSize(curPartSize);
            uploadPartRequest.setPartNumber(i + 1);

            UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);

            // 将 PartETag 添加到數組中
            partETags.add(uploadPartResult.getPartETag());

            // 關閉檔案流
            inputStream.close();
        }

        // 完成分塊上傳
        CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
        ossClient.completeMultipartUpload(completeMultipartUploadRequest);

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 關閉 OSSClient
        ossClient.shutdown();
    }
}
           

在上面的代碼中,我們通過 initiateMultipartUpload 方法初始化分塊上傳,并擷取 UploadId。然後,我們計算分塊數,并周遊分塊進行上傳。最後,通過 completeMultipartUpload 方法完成分塊上傳。

四、檔案下載下傳

在 Java 中使用阿裡雲對象存儲 OSS 實作檔案下載下傳也很簡單,我們隻需要通過 OSSClient 對象調用相應的 API 即可。下面是一個示例代碼:

java複制代碼public static void downloadFile(String endpoint, String accessKeyId, String accessKeySecret, String bucketName, String objectName, String savePath) {
    // 建立 OSSClient 對象
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    try {
        // 下載下傳檔案
        ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(savePath));

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 關閉 OSSClient
        ossClient.shutdown();
    }
}
           

在上面的代碼中,我們首先建立了一個 OSSClient 對象,然後通過 getObject 方法下載下傳檔案到本地。

五、小結一下

以上就是在 Java 中使用阿裡雲對象存儲 OSS 的基本操作,包括簡單上傳檔案、斷點續傳和檔案下載下傳。阿裡雲對象存儲 OSS 擁有着高可靠性、高擴充性和低成本等優勢,在網際網路開發中得到了廣泛應用。希望本文能夠幫助讀者更好的利用阿裡雲對象存儲 OSS,提高資料存儲和通路效率。

繼續閱讀