文件元信息是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置文件HTTP头来自定义HTTP请求的策略,例如文件(Object)缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。

HTTP标准属性

OSS将为上传至Bucket中的每个Object保留如下HTTP标准属性。

Content-Encoding 声明Object的编码方式。您需要按照Object 的实际编码类型填写,否则可能造成客户端(浏览器)解析编码失败或Object下载失败。若Object未编码,请置空此项。取值如下:
  • identity (默认值):表示Object未经过压缩或编码。
  • gzip :表示Object采用Lempel-Ziv(LZ77)压缩算法以及32位CRC校验的编码方式。
  • compress :表示Object采用Lempel-Ziv-Welch(LZW)压缩算法的编码方式。
  • deflate :表示Object采用zlib结构和deflate压缩算法的编码方式。
  • br :表示Object采用Brotli算法的编码方式。

    关于Content-Encoding的更多信息,请参见 RFC2616

    重要 如果您希望访问OSS内常见网页静态文件(HTML、Javascript、XML、json)时进行Gzip压缩,您需要置空此项,并在请求中增加 Accept-Encoding: gzip
  • Content-Disposition:attachment :以原文件名的形式下载到浏览器指定路径。
  • Content-Disposition:attachment; filename="yourFileName" :以自定义文件名的形式下载到浏览器指定路径。

    yourFileName用于自定义下载后的文件名称,例如example.jpg。

    将Object下载到浏览器指定路径时:

  • 如果Object名称包含星号(*)、正斜线(/)等特殊字符时,可能会出现特殊字符转义的情况。例如,下载 example*.jpg" 到本地时, example*.jpg" 可能会转义为 example_.jpg"
  • 如需确保下载名称中包含中文字符的Object到本地指定路径后,文件名称不出现乱码的现象,您需要将名称中包含的中文字符进行URL编码。例如,将 测试.txt 从OSS下载到本地后,需要保留文件名为 测试.txt ,需按照 "attachment;filename="+URLEncoder.encode("测试","UTF-8")+".txt;filename*=UTF-8''"+URLEncoder.encode("测试","UTF-8")+".txt") 的格式设置Content-Disposition,即 attachment;filename=%E6%B5%8B%E8%AF%95.txt;filename*=%E6%B5%8B%E8%AF%95.txt 。 指定Object的缓存行为。取值如下:
  • no-cache :不可直接使用缓存,而是先到服务端验证Object是否已更新。如果Object已更新,表明缓存已过期,需从服务端重新下载Object;如果Object未更新,表明缓存未过期,此时将使用本地缓存。
  • no-store :所有内容都不会被缓存。
  • public :所有内容都将被缓存。
  • private :所有内容只在客户端缓存。
  • max-age=<seconds> :缓存内容的相对过期时间,单位为秒。此选项仅在HTTP 1.1中可用。

    您可以在上传Object时,为Object添加自定义元数据(User Meta),用于标识Object的用途或属性等。

  • 一个Object可以有多个自定义元数据,但所有的自定义元数据总大小不能超过8 KB。
  • 自定义元数据是一组键值对,元数据名称必须以 x-oss-meta- 开头。例如 x-oss-meta-last-modified:20210506 ,可用于记录本地文件最后修改时间为2021年5月6日。
  • 调用 GetObject 或者 HeadObject 接口时,将在HTTP头部返回自定义元数据。
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.common.utils.BinaryUtil;
    import com.aliyun.oss.common.utils.DateUtil;
    import com.aliyun.oss.model.ObjectMetadata;
    import java.io.ByteArrayInputStream;
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
            String accessKeyId = "yourAccessKeyId";
            String accessKeySecret = "yourAccessKeySecret";
            // 填写Bucket名称,例如examplebucket。
            String bucketName = "examplebucket";
            // 填写不包含Bucket名称在内的Object完整路径,例如testfolder/exampleobject.txt。
            String objectName = "testfolder/exampleobject.txt";
            String content = "Hello OSS";
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            try {
                // 创建上传文件的元信息,可以通过文件元信息设置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("gzip");
                // 设置Header。
                meta.setHeader("yourHeader", "yourHeaderValue");
                // 上传文件。
                ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()), meta);
            } catch (OSSException oe) {
                System.out.println("Caught an OSSException, which means your request made it to OSS, "
                        + "but was rejected with an error response for some reason.");
                System.out.println("Error Message:" + oe.getErrorMessage());
                System.out.println("Error Code:" + oe.getErrorCode());
                System.out.println("Request ID:" + oe.getRequestId());
                System.out.println("Host ID:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Caught an ClientException, which means the client encountered "
                        + "a serious internal problem while trying to communicate with OSS, "
                        + "such as not being able to access the network.");
                System.out.println("Error Message:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
    }               
    <?php
    if (is_file(__DIR__ . '/../autoload.php')) {
        require_once __DIR__ . '/../autoload.php';
    if (is_file(__DIR__ . '/../vendor/autoload.php')) {
        require_once __DIR__ . '/../vendor/autoload.php';
    use OSS\OssClient;
    use OSS\Core\OssException;
    // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    $accessKeyId = "yourAccessKeyId";
    $accessKeySecret = "yourAccessKeySecret";
    // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    $endpoint = "yourEndpoint";
    // 填写Bucket名称,例如examplebucket。
    $bucket= "examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    $object = "exampledir/exampleobject.txt";
    $content = file_get_contents(__FILE__);
    $options = array(
        OssClient::OSS_HEADERS => array(
            'Expires' => '2012-10-01 08:00:00',
            'Content-Disposition' => 'attachment; filename="xxxxxx"',
            'x-oss-meta-self-define-title' => 'user define meta info',
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
        // 上传文件时设置元信息。
        $ossClient->putObject($bucket, $object, $content, $options);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    print(__FUNCTION__ . ": OK" . "\n");
                
    let OSS = require('ali-oss')
    let client = new OSS({
      region: '<Your region>',
      accessKeyId: '<Your AccessKeyId>',
      accessKeySecret: '<Your AccessKeySecret>',
      bucket: '<Your bucket name>',
    async function put () {
      try {
        let result = await client.put('object-name', 'local-file', {
        meta: {
          year: 2016,
          people: 'mary'
      console.log(result);
      } catch (e) {
        console.log(e);
    put();
            
    # -*- coding: utf-8 -*-
    import oss2
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    # 填写Bucket名称,例如examplebucket。
    bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')
    # 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
    object_name = 'exampledir/exampleobject.txt'
    # 填写待上传的字符串。
    content = '{"age": 1}'
    # 设置HTTP header,例如HTTP header的名称为Content-Type,值为'application/json; charset=utf-8'。
    bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8'})
    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    var endpoint = "yourEndpoint";
    // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    var accessKeyId = "yourAccessKeyId";
    var accessKeySecret = "yourAccessKeySecret";
    // 填写Bucket名称。
    var bucketName = "examplebucket";
    // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
    var objectName = "exampleobject.txt";
    // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    var localFilename = "D:\\localpath\\examplefile.txt";
    // 创建OssClient实例。
    var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
        using (var fs = File.Open(localFilename, FileMode.Open))
            // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
            var metadata = new ObjectMetadata()
                // 指定文件类型。
                ContentType = "text/html",
                // 设置缓存过期时间,格式是格林威治时间(GMT)。
                ExpirationTime = DateTime.Parse("2025-10-12T00:00:00.000Z"),
            // 设置上传文件的长度。如超过此长度,则会被截断为设置的长度。如不足,则为上传文件的实际长度。
            metadata.ContentLength = fs.Length;
            // 设置文件被下载时网页的缓存行为。
            metadata.CacheControl = "No-Cache";
            // 设置元信息mykey1值为myval1。
            metadata.UserMetadata.Add("mykey1", "myval1");
            // 设置元信息mykey2值为myval2。
            metadata.UserMetadata.Add("mykey2", "myval2");
            var saveAsFilename = "文件名测试123.txt";
            var contentDisposition = string.Format("attachment;filename*=utf-8''{0}", HttpUtils.EncodeUri(saveAsFilename, "utf-8"));
            // 把请求所得的内容存为一个文件的时候提供一个默认的文件名。
            metadata.ContentDisposition = contentDisposition;
            // 上传文件并设置文件元信息。
            client.PutObject(bucketName, objectName, fs, metadata);
            Console.WriteLine("Put object succeeded");
            // 获取文件元信息。
            var oldMeta = client.GetObjectMetadata(bucketName, objectName);
            // 设置新的文件元信息。
            var newMeta = new ObjectMetadata()
                ContentType = "application/octet-stream",
                ExpirationTime = DateTime.Parse("2035-11-11T00:00:00.000Z"),
                // 指定文件被下载时的内容编码格式。
                ContentEncoding = null,
                CacheControl = ""
            // 增加自定义元信息。
            newMeta.UserMetadata.Add("author", "oss");
            newMeta.UserMetadata.Add("flag", "my-flag");
            newMeta.UserMetadata.Add("mykey2", "myval2-modified-value");
            // 通过ModifyObjectMeta方法修改文件元信息。
            client.ModifyObjectMeta(bucketName, objectName, newMeta);
    catch (Exception ex)
        Console.WriteLine("Put object failed, {0}", ex.Message);
    }
    // 创建同步获取文件元信息请求。
    // 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
    HeadObjectRequest head = new HeadObjectRequest("examplebucket", "exampledir/exampleobject.txt");
    // 获取文件元信息。
    OSSAsyncTask task = oss.asyncHeadObject(head, new OSSCompletedCallback<HeadObjectRequest, HeadObjectResult>() {
        @Override
        public void onSuccess(HeadObjectRequest request, HeadObjectResult result) {
        // 获取文件长度。
            Log.d("headObject", "object Size: " + result.getMetadata().getContentLength()); 
        // 获取文件类型。
            Log.d("headObject", "object Content Type: " + result.getMetadata().getContentType()); 
        @Override
        public void onFailure(HeadObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
            // 请求异常。
            if (clientExcepion != null) {
                // 本地异常,如网络异常等。
                clientExcepion.printStackTrace();
            if (serviceException != null) {
                // 服务异常。
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
    // task.waitUntilFinished(); //等待任务完成。
    package main
    import (
        "fmt"
        "time"
        "strings"
        "github.com/aliyun/aliyun-oss-go-sdk/oss"
    func main() {
        // 创建OSSClient实例。
        // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") 
        if err != nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        // 填写Bucket名称,例如examplebucket。
        bucket, err := client.Bucket("examplebucket")
        if err != nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        // 设置文件元信息,例如指定过期时间为2049年01月10日 23:00:00 GMT,访问权限为公共读,自定义元信息为MyProp(取值MyPropVal)。
        expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
        options := []oss.Option{
            oss.Expires(expires),
            oss.ObjectACL(oss.ACLPublicRead),
            oss.Meta("MyProp", "MyPropVal"),
        // 使用数据流上传文件。
        // 填写Object的完整路径,完整路径中不包含Bucket名称,例如exampledir/exampleobject.txt。
        err = bucket.PutObject("exampledir/exampleobject.txt", strings.NewReader("MyObjectValue"), options...)
        if err != nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        // 获取文件元信息。
        props, err := bucket.GetObjectDetailedMeta("exampledir/exampleobject.txt")
        if err != nil {
            fmt.Println("Error:", err)
            os.Exit(-1)
        fmt.Println("Object Meta:", props)
    }           
    OSSHeadObjectRequest * request = [OSSHeadObjectRequest new];
    // 填写Bucket名称,例如examplebucket。
    request.bucketName = @"examplebucket";
    // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
    request.objectKey = @"exampledir/exampleobject.txt";
    OSSTask * headTask = [client headObject:request];
    [headTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"head object success!");
            OSSHeadObjectResult * result = task.result;
            NSLog(@"header fields: %@", result.httpResponseHeaderFields);
            for (NSString * key in result.objectMeta) {
                NSLog(@"ObjectMeta: %@ - %@", key, [result.objectMeta objectForKey:key]);
        } else {
            NSLog(@"head object failed, error: %@" ,task.error);
        return nil;
    }];
    #include <alibabacloud/oss/OssClient.h>
    using namespace AlibabaCloud::OSS;
    int main(void)
        /* 初始化OSS账号信息。*/
        /* 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。*/
        std::string AccessKeyId = "yourAccessKeyId";
        std::string AccessKeySecret = "yourAccessKeySecret";
        /* yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
        std::string Endpoint = "yourEndpoint";
        /* 填写Bucket名称,例如examplebucket。*/
        std::string BucketName = "examplebucket";
        /* 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。*/
        std::string ObjectName = "exampledir/exampleobject.txt";
        /* 初始化网络等资源。*/
        InitializeSdk();
        ClientConfiguration conf;
        OssClient client(Endpoint, AccessKeyId, AccessKeySecret , conf);
        /* 设置HTTP header。*/
        auto meta = ObjectMetaData();
        meta.setContentType("text/plain");
        meta.setCacheControl("max-ag e=3");
        /* 设置自定义文件元信息。*/
        meta.UserMetaData()["meta"] = "meta-value";
        std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
        *content << "Thank you for using Aliyun Object Storage Service!";
        client.PutObject(BucketName, ObjectName, content, meta);
        if (!outcome.isSuccess()) {
            /* 异常处理。*/
            std::cout << "PutObject fail" <<
            ",code:" << outcome.error().Code() <<
            ",message:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;
        /* 释放网络等资源。*/
        ShutdownSdk();
        return 0;
    }
    #include "oss_api.h"
    #include "aos_http_io.h"
    /*yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。*/
    const char *endpoint = "yourEndpoint";
    /* 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。*/
    const char *access_key_id = "yourAccessKeyId";
    const char *access_key_secret = "yourAccessKeySecret";
    /* 填写Bucket名称,例如examplebucket。*/
    const char *bucket_name = "examplebucket";
    /* 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。*/
    const char *object_name = "exampledir/exampleobject.txt";
    const char *object_content= "hello world";
    void init_options(oss_request_options_t *options)
        options->config = oss_config_create(options->pool);
        /* 用char*类型的字符串初始化aos_string_t类型。*/
        aos_str_set(&options->config->endpoint, endpoint);
        aos_str_set(&options->config->access_key_id, access_key_id);
        aos_str_set(&options->config->access_key_secret, access_key_secret);
        /* 是否使用了CNAME。0表示不使用。*/
        options->config->is_cname = 0;
        /* 用于设置网络相关参数,比如超时时间等。*/
        options->ctl = aos_http_controller_create(options->pool, 0);
    int main(int argc, char *argv[])
        /* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
        if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
            exit(1);
        /* 用于内存管理的内存池(pool),等价于apr_pool_t。其实现代码在apr库中。*/
        aos_pool_t *pool;
        /* 重新创建一个内存池,第二个参数是NULL,表示没有继承其它内存池。*/
        aos_pool_create(&pool, NULL);
        /* 创建并初始化options,该参数包括endpoint、access_key_id、acces_key_secret、is_cname、curl等全局配置信息。*/
        oss_request_options_t *oss_client_options;
        /* 在内存池中分配内存给options。*/
        oss_client_options = oss_request_options_create(pool);
        /* 初始化Client的选项oss_client_options。*/
        init_options(oss_client_options);
        /* 初始化参数。*/
        aos_string_t bucket;
        aos_string_t object;
        aos_table_t *headers;
        aos_list_t buffer;
        aos_table_t *resp_headers = NULL; 
        aos_status_t *resp_status = NULL; 
        aos_buf_t *content = NULL;
        char *content_length_str = NULL;
        char *object_type = NULL;
        char *object_author = NULL;
        int64_t content_length = 0;
        aos_str_set(&bucket, bucket_name);
        aos_str_set(&object, object_name);
        headers = aos_table_make(pool, 2);
        /* 设置用户自定义元信息。*/
        apr_table_set(headers, "Expires", "Fri, 28 Feb 2032 05:38:42 GMT"); 
        apr_table_set(headers, "x-oss-meta-author", "oss");
        aos_list_init(&buffer);
        content = aos_buf_pack(oss_client_options->pool, object_content, strlen(object_content));
        aos_list_add_tail(&content->node, &buffer);
        /* 从缓存中上传文件。*/
        resp_status = oss_put_object_from_buffer(oss_client_options, &bucket, &object, 
                   &buffer, headers, &resp_headers);
        if (aos_status_is_ok(resp_status)) {
            printf("put object from buffer with md5 succeeded\n");
        } else {
            printf("put object from buffer with md5 failed\n");
        /* 获取文件元信息。*/
        resp_status = oss_get_object_meta(oss_client_options, &bucket, &object, &resp_headers);
        if (aos_status_is_ok(resp_status)) {
            content_length_str = (char*)apr_table_get(resp_headers, OSS_CONTENT_LENGTH);
            if (content_length_str != NULL) {
                content_length = atol(content_length_str);
            object_author = (char*)apr_table_get(resp_headers, OSS_AUTHORIZATION);
            object_type = (char*)apr_table_get(resp_headers, OSS_OBJECT_TYPE);
            printf("get object meta succeeded, object author:%s, object type:%s, content_length:%ld\n", object_author, object_type, content_length);
        } else {
            printf("req:%s, get object meta failed\n", resp_status->req_id);
        /* 释放内存池,相当于释放了请求过程中各资源分配的内存。*/
        aos_pool_destroy(pool);
        /* 释放之前分配的全局资源。*/
        aos_http_io_deinitialize();
        return 0;
    }
    require 'aliyun/oss'
    client = Aliyun::OSS::Client.new(
      # 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
      endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
      # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
      access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')
    # 填写Bucket名称,例如examplebucket。
    bucket = client.get_bucket('examplebucket')
    # 设置文件元信息。
    bucket.put_object(
      'my-object-1',
      :file => 'local-file',
      :metas => {'year' => '2016', 'people' => 'mary'})
    bucket.append_object(
      'my-object-2', 0,
      :file => 'local-file',
      :metas => {'year' => '2016', 'people' => 'mary'})
    bucket.resumable_upload(
      'my-object',
      'local-file',
      :metas => {'year' => '2016', 'people' => 'mary'})            

    使用命令行工具ossutil

    关于使用ossutil设置Object元信息的具体操作,请参见 set-meta(管理文件元信息)

    使用REST API

    如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。更多信息,请参见 PutObject

  •