阿里雲OSS文件上傳詳解

一、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-hant/n/361191.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VAWPZ的頭像VAWPZ
上一篇 2025-02-24 00:34
下一篇 2025-02-24 00:34

相關推薦

  • 使用 DRF 實現文件上傳

    文件上傳是 web 應用程序中最常見的需求之一,本文將介紹如何使用 Django Rest Framework (DRF) 來實現文件上傳。通過本文,你將學習到如何使用 DRF 中…

    編程 2025-04-28
  • 阿里雲郵箱主機名

    阿里雲郵箱主機名是指在阿里雲購買並綁定域名後,為郵件服務配置的一個記錄類型。在這篇文章中,我們將從多個方面對阿里雲郵箱主機名進行詳細闡述,幫助您更好地了解它的作用、使用方法和注意事…

    編程 2025-04-27
  • 阿里Python技術手冊

    本文將從多個方面對阿里Python技術手冊進行詳細闡述,包括規範、大數據、Web應用、安全和調試等方面。 一、規範 Python的編寫規範對於代碼的可讀性和可維護性有很大的影響。阿…

    編程 2025-04-27
  • 阿里雲Grass使用指南

    本文將為大家詳細介紹阿里雲Grass平台,包括核心概念、使用場景、基本操作、高級特性等內容,幫助大家全面掌握Grass的使用。 一、核心概念 Grass是阿里雲開發的一款全新PAA…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25

發表回復

登錄後才能評論