阿里雲OSS下載詳解

阿里雲對象存儲(Object Storage Service,簡稱OSS)是阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。在使用過程中,對象的上傳和下載是最基礎的功能之一。本文將從多個方面介紹OSS的下載功能,包括下載文件、下載鏈接、失敗解決、費用等問題。

一、OSS下載文件

在使用OSS進行文件下載時,我們需要先了解下載文件的方法,本節將對OSS下載文件的方法進行闡述。

Java SDK下載示例:

// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret請登錄控制台查找或聯繫管理員獲取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名稱
String bucketName = "";
// Object完整路徑
String objectName = "";

// 創建OSSClient實例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下載Object到文件
ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(""));

// 關閉OSSClient
ossClient.shutdown();

Python SDK下載示例:

import oss2
# 阿里雲AccessKeyId、AccessKeySecret和Endpoint
access_key_id = ''
access_key_secret = ''
endpoint = ''
# Bucket名稱和Object完整路徑
bucket_name = ''
object_name = ''
# 下載文件
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
bucket.get_object_to_file(object_name, '')

二、阿里雲OSS下載鏈接

在使用OSS進行文件下載時,我們可以直接生成已簽名URL鏈接,並將鏈接分享給他人,以供他人進行下載。

Java SDK生成已簽名URL鏈接示例:

// Endpoint以杭州為例,其它Region請按實際情況填寫
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret請登錄控制台查找或聯繫管理員獲取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名稱
String bucketName = "";
// Object完整路徑
String objectName = "";

// 創建OSSClient實例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 設置URL過期時間為1小時
Date expiration = new Date(new Date().getTime() + 3600 * 1000);

// 生成以HTTP GET方法訪問的簽名URL,URL有效期為1小時
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration, HttpMethod.GET);

// 關閉OSSClient
ossClient.shutdown();

Python SDK生成已簽名URL鏈接示例:

import oss2
# 阿里雲AccessKeyId、AccessKeySecret和Endpoint
access_key_id = ''
access_key_secret = ''
endpoint = ''
# Bucket名稱和Object完整路徑
bucket_name = ''
object_name = ''

# 設置URL過期時間為1小時
expires = 3600
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
# 生成以HTTP GET方法訪問的簽名URL,URL有效期為1小時
url = bucket.sign_url('GET', object_name, expires)

print url

三、OSS下載文件失敗

在使用OSS進行文件下載時,由於一些原因可能會導致文件下載失敗,下面列舉幾種常遇到的問題,並提供解決方案:

1. AccessKeyId和AccessKeySecret錯誤

如果您在下載文件時遇到錯誤信息:「The OSS Access Key Id you provided does not exist in our records.」,這表明您輸入的AccessKeyId或AccessKeySecret錯誤。

解決方法:請重新輸入正確的AccessKeyId和AccessKeySecret。

2. Bucket不存在或Object不存在

如果您在下載文件時遇到錯誤信息:「The bucket you are attempting to access must be addressed using the specified endpoint.」 或 「The specified key does not exist.」,這表明您輸入的Bucket名稱或Object名稱錯誤。

解決方法:請檢查Bucket名稱和Object名稱是否正確。

四、阿里雲OSS下載費用

在使用OSS進行文件下載時,需要根據實際情況了解OSS的下載費用,以便選擇最優的下載方式。

OSS的下載費用由以下三個因素確定:

1. 下載流量

根據下載流量計算費用,OSS在指定地點的下載流量最低為0.12元/GB。下載流量和單價可以在阿里雲OSS官網上查詢。

2. 請求次數

當用戶請求下載OSS的一個文件時,伺服器會收到一個請求。OSS的請求次數和請求類型決定了其費用,詳見阿里雲OSS計費說明。

3. 存儲空間

存儲空間是指用於存放用戶數據的空間,OSS的存儲空間費用按存儲量計費。OSS的存儲費用可以在阿里雲OSS官網上查詢。

五、其他問題探討

1. OSS下載PDF文件

當需要從OSS下載PDF文件時,我們可以使用OSS提供的getStream方法獲取流,從而進行下載。

Java SDK下載PDF文件示例:

// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret請登錄控制台查找或聯繫管理員獲取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名稱
String bucketName = "";
// Object完整路徑
String objectName = "";

// 創建OSSClient實例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下載Object到流
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 從流中讀取PDF並轉存到本地文件
FileOutputStream output = new FileOutputStream("");
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = inputStream.read(buffer))) {
    output.write(buffer, 0, n);
}
output.close();

// 關閉OSSClient
ossClient.shutdown();

2. OSS下載doc文件

當需要從OSS下載doc文件時,我們可以使用OSS提供的getStream方法獲取流,從而進行下載。

Java SDK下載doc文件示例:

// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret請登錄控制台查找或聯繫管理員獲取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名稱
String bucketName = "";
// Object完整路徑
String objectName = "";

// 創建OSSClient實例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下載Object到流
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 從流中讀取doc並轉存到本地文件
FileOutputStream output = new FileOutputStream("");
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = inputStream.read(buffer))) {
    output.write(buffer, 0, n);
}
output.close();

// 關閉OSSClient
ossClient.shutdown();

3. OSS下載到了哪裡

在進行文件下載時,OSS會將文件下載到本地目錄中,具體路徑請查看下載代碼中的文件路徑設置。

4. OSS下載文件名選取

在進行文件下載時,文件名選取應根據實際業務需求進行制定,文件名應表達清晰、簡明準確。

原創文章,作者:YQZSI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331615.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YQZSI的頭像YQZSI
上一篇 2025-01-20 14:11
下一篇 2025-01-20 14:11

相關推薦

  • 阿里雲郵箱主機名

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

    編程 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
  • git config user.name的詳解

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

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

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

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

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

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

    編程 2025-04-25

發表回復

登錄後才能評論