獲取對象文件的直接地址(下載鏈接)
更新時間 2024-05-30 16:22:46
最近更新時間: 2024-05-30 16:22:46
分享文章
本文介紹了通過控制臺或本地代碼獲取對象文件的直接url地址(下載鏈接)的方法。
操作場景
對象文件的直接url地址可用于匿名用戶直接下載對象文件,或程序代碼中直接調用下載對象文件。
當用戶需要獲取某桶內某個對象文件的直接url地址時,可以通過如下兩種方式解決:
- 通過控制臺頁面獲取:詳情請見通過URL訪問對象。
- 本地通過代碼獲取:無需通過控制臺,在本地通過代碼獲取對象文件的直接url地址的方法,請見本文后續介紹。
前提條件
- 用戶已有對象文件上傳至對象存儲,已知該資源池對象存儲服務的Endpoint域名,該對象文件所在的桶名稱(bucketName)和對象鍵(key)。
- 對象鍵(key)為該對象文件的所有目錄層級與文件名稱加斜杠(/)后拼接而成。如一個對象文件在桶內的所有目錄層級為“aaa/bbb”,文件名稱為ccc.txt,該對象文件的對象鍵(key)是“aaa/bbb/ccc.txt”。
注意如果需要通過該url地址實現匿名用戶直接下載,對象文件的權限需要改為“公共讀”。
代碼樣例
- 對象文件的公網下載地址為:公網Endpoint/桶名稱/對象鍵(包含所有的目錄層級)
- 對象文件的內網下載地址為:內網Endpoint/桶名稱/對象鍵(包含所有的目錄層級)
例如:華東1資源池對象存儲服務的Endpoint域名為//jiangsu-10.zos.daliqc.cn,桶名為buckettest001,包含所有目錄層級的對象名為aaa/bbb/ccc.txt,則該對象的公網下載地址://jiangsu-10.zos.daliqc.cn/buckettest001/aaa/bbb/ccc.txt
根據上述原理,我們提供Java、Python、C++、Bash的代碼樣例如下,代碼中的url參數就是用戶所需的對象文件的直接url地址:
JAVA
import java.net.URI;
import java.net.URISyntaxException;
public class urlJoint {
public static void main(String[] args) {
String serviceEndpoint = "//jiangsu-10.zos.daliqc.cn";
String bucketName = "bucket";
String key = "aaa/bbb.txt"; //包含目錄層級和文件名
try {
URI uri = new URI(serviceEndpoint + "/" + bucketName + "/" + key);
String url = uri.toString();//該參數為對象文件的直接url地址
//System.out.println(url);//打印URL地址,如不需要打印,可刪除
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
Python
from urllib.parse import urljoin
endpoint_url = "//jiangsu-10.zos.daliqc.cn"
Bucket = "bucket"
Key = "aaa/bbb.txt" #包含目錄層級和文件名
url = urljoin(endpoint_url, f"{Bucket}/{Key}")#該參數為對象文件的直接url地址
#print(url)#打印URL地址,如不需要打印,可刪除
C++
#include <iostream>
#include <string>
int main() {
std::string endpointUrl = "//jiangsu-10.zos.daliqc.cn";
std::string bucketName = "bucket";
std::string keyName = "aaa/bbb.txt"; //包含目錄層級和文件名
std::string url = endpointUrl + "/" + bucketName + "/" + keyName;//該參數為對象文件的直接url地址
//std::cout << url << std::endl;//打印URL地址,如不需要打印,可刪除
return 0;
}
Bash
#!/bin/bash
endpoint_url="//jiangsu-10.zos.daliqc.cn"
bucket="bucket"
#包含目錄層級和文件名
key="aaa/bbb.txt"
#該參數為對象文件的直接url地址
url="${endpoint_url}/${bucket}/${key}"
#打印URL地址,如不需要打印,可刪除
#echo "$url"