赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 开发参考
  5. SDK参考
  6. PHP
  7. 1.0手册
  8. 对象文件
  9. 管理文件
  10. 管理文件元数据
  11. 上传文件时设置元数据

上传文件时设置元数据

  • 管理文件元数据
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

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

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSS访问域名、数据中心、开放端口。

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OssClient。

  • 要设置文件元数据,您必须具有oss:PutObject权限。具体操作,请参见为RAM用户授权自定义的权限策略。

示例代码

以下代码用于上传文件时设置元数据。

警告

在上传文件时设置元数据,请确保该Bucket内不存在同名文件,否则会覆盖同名文件。关于如何避免覆盖同名文件的更多信息,请参见避免覆盖同名文件。

<?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\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 
$provider = new EnvironmentVariableCredentialsProvider();
// 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',
    ));
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // 上传文件时设置元数据。
    $ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

相关文档

  • 关于上传文件时设置元数据的完整示例代码,请参见GitHub示例。

  • 关于上传文件时设置元数据的API接口说明,请参见PutObject。

常见问题

在上传文件时设置元数据,如何避免覆盖Bucket内的同名文件?

为避免覆盖Bucket内的同名文件,您可以选择以下任意方式:

  • 开启版本控制

    开启版本控制功能后,Bucket中被覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。更多信息,请参见开启版本控制。

  • 在上传请求中携带禁止覆盖同名文件的参数

    在上传请求的Header中携带参数x-oss-forbid-overwrite,并指定其值为true。当您上传的文件与Bucket中已有的文件同名时,该文件会上传失败,并返回FileAlreadyExists错误。更多信息,请参见PutObject。

相关文章

上传文件时设置元数据 2025-04-21 18:14

对象存储OSS存储的文件(Object)信息包含Key、Data和Object Meta。Object Meta是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置HTTP标准属性来自定义HTTP请求的策略,例如文件(Obje

修改已有文件的元数据 2025-04-21 18:14

本文介绍如何修改已有文件(Object)的元数据。 注意事项

获取文件元数据 2025-04-21 18:14

您可以获取一个文件(Object)的元数据信息,包括该Object的ETag、Size、LastModified信息,并且不返回该Object的内容。 注意事项

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号