文件元信息(Object Meta)包括HTTP header和自定義元信息,詳情請參見開發指南中的文件元信息。html
如下代碼用於設置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