阿里雲OSS管理文件元信息

管理文件元信息

文件元信息(Object Meta)包括HTTP header和自定義元信息,詳情請參見開發指南中的文件元信息html

設置文件元信息

  • 設置HTTP header

    如下代碼用於設置HTTP header:c#

    // Endpoint以杭州爲例,其它Region請按實際狀況填寫。
    String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // 阿里雲主帳號AccessKey擁有全部API的訪問權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或平常運維,請登陸 https://ram.console.aliyun.com 建立RAM帳號。
    String accessKeyId = "<yourAccessKeyId>";
    String accessKeySecret = "<yourAccessKeySecret>";
    
    String content = "Hello OSS";
    
    // 建立上傳文件的元信息,能夠經過文件元信息設置HTTP header。
    ObjectMetadata meta = new ObjectMetadata();
    
    String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
    // 開啓文件內容MD5校驗。開啓後OSS會把您提供的MD5與文件的MD5比較,不一致則拋出異常。
    meta.setContentMD5(md5);
    // 指定上傳的內容類型。內容類型決定瀏覽器將以什麼形式、什麼編碼讀取文件。若是沒有指定則根據文件的擴展名生成,若是沒有擴展名則爲默認值application/octet-stream。
    meta.setContentType("text/plain");
    // 設置內容被下載時的名稱。
    meta.setContentDisposition("attachment; filename=\"DownloadFilename\"");
    // 設置上傳文件的長度。如超過此長度,則會被截斷,爲設置的長度。如不足,則爲上傳文件的實際長度。
    meta.setContentLength(content.length());
    // 設置內容被下載時網頁的緩存行爲。
    meta.setCacheControl("Download Action");
    // 設置緩存過時時間,格式是格林威治時間(GMT)。
    meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
    // 設置內容被下載時的編碼格式。
    meta.setContentEncoding("utf-8");
    // 設置header。
    meta.setHeader("<yourHeader>", "<yourHeaderValue>");
    // 建立OSSClient實例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
    // 上傳文件。
    ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
    
    // 關閉OSSClient。
    ossClient.shutdown();

    HTTP header詳情請參見RFC2616瀏覽器

  • 設置自定義元信息

    您能夠自定義文件的元信息來對文件進行描述。緩存

    如下代碼用於設置文件的自定義元信息:app

    // Endpoint以杭州爲例,其它Region請按實際狀況填寫。
    String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // 阿里雲主帳號AccessKey擁有全部API的訪問權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或平常運維,請登陸 https://ram.console.aliyun.com 建立RAM帳號。
    String accessKeyId = "<yourAccessKeyId>";
    String accessKeySecret = "<yourAccessKeySecret>";
    
    String content = "Hello OSS";
    
    // 建立OSSClient實例。
    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
    // 建立文件元信息。
    ObjectMetadata meta = new ObjectMetadata();
    
    // 設置自定義元信息property值爲property-value。建議使用Base64編碼。
    meta.addUserMetadata("property", "property-value");
    
    // 上傳文件。
    ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
    
    // 獲取文件元信息。
    ossClient.getObjectMetadata("<yourBucketName>", "<yourObjectName>");
    
    // 關閉OSSClient。
    ossClient.shutdown();

    下載文件時,文件元信息也會同時下載。 一個文件能夠有多個元信息,總大小不能超過8KB。運維

修改文件元信息

如下代碼用於修改文件的元信息:ui

// Endpoint以杭州爲例,其它Region請按實際狀況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有全部API的訪問權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或平常運維,請登陸 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String sourceBucketName = "<yourSourceBucketName>";
String sourceObjectName = "<yourSourceObjectName>";
String destinationBucketName = "<yourDestinationBucketName>";
String destinationObjectName = "<yourDestinationObjectName>";

// 建立OSSClient實例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);

// 設置源文件與目標文件相同,調用ossClient.copyObject方法修改文件元信息。
CopyObjectRequest request = new CopyObjectRequest(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName);

ObjectMetadata meta = new ObjectMetadata();
// 指定上傳的內容類型。內容類型決定瀏覽器將以什麼形式、什麼編碼讀取文件。若是沒有指定則根據文件的擴展名生成,若是沒有擴展名則爲默認值application/octet-stream。
meta.setContentType("text/plain");
// 設置內容被下載時的名稱。
meta.setContentDisposition("Download File Name");
// 設置內容被下載時網頁的緩存行爲。
meta.setCacheControl("Download Action");
// 設置緩存過時時間,格式是格林威治時間(GMT)。
meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
// 設置內容被下載時的編碼格式。
meta.setContentEncoding("utf-8");
// 設置header。
meta.setHeader("<yourHeader>", "<yourHeaderValue>");
// 設置自定義元信息property值爲property-value。
meta.addUserMetadata("property", "property-value");
request.setNewObjectMetadata(meta);

//修改元信息。
ossClient.copyObject(request);

// 關閉OSSClient。
ossClient.shutdown();

獲取文件元信息

您能夠經過如下兩種方法獲取文件元信息:阿里雲

 
方法 描述 優點
ossClient.getSimplifiedObjectMeta 獲取文件的ETag、Size(文件大小)、 LastModified(最後修改時間)。 更輕量、更快
ossClient.getObjectMetadata 獲取文件的所有元信息。

如下代碼用於獲取文件元信息:編碼

// Endpoint以杭州爲例,其它Region請按實際狀況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有全部API的訪問權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或平常運維,請登陸 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 建立OSSClient實例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 獲取文件的部分元信息。
SimplifiedObjectMeta objectMeta = ossClient.getSimplifiedObjectMeta("<yourBucketName>", "<yourObjectName>");
System.out.println(objectMeta.getSize());
System.out.println(objectMeta.getETag());
System.out.println(objectMeta.getLastModified());

// 獲取文件的所有元信息。
ObjectMetadata metadata = ossClient.getObjectMetadata("<yourBucketName>", "<yourObjectName>");
System.out.println(metadata.getContentType());
System.out.println(metadata.getLastModified());
System.out.println(metadata.getExpirationTime());

// 關閉OSSClient。
ossClient.shutdown();

詳細參考:spa

https://helpcdn.aliyun.com/document_detail/84840.html?spm=a2c4g.11186623.2.12.1b363ef2siO7Ic#concept-84840-zh

相關文章
相關標籤/搜索