阿里雲對象存儲(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