开发者社区 问答 正文

关于Object操作之如何实现PutSymlink?


Put Symlink


Put Symlink用于创建符号链接。

请求语法PUT /ObjectName?symlink HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-symlink-target: TargetObjectName





请求Header

名称描述
x-oss-symlink-target符号链接指向的目标文件。 类型:字符串 合法值:命名规范同Object。


细节分析

  1. TargetObjectName同ObjectName一样,需要URL encode。
  2. 符号链接的目标文件类型不能为符号链接。
  3. 创建符号链接时,
    • 不检查目标文件是否存在
    • 不检查目标文件类型是否合法
    • 不检查目标文件是否有权限访问 以上检查,都推迟到GetObject等需要访问目标文件的API。
  • 如果试图添加的文件已经存在,并且有访问权限。新添加的文件将覆盖原来的文件,成功返回200 OK。
  • 如果在PutSymlink的时候,携带以x-oss-meta-为前缀的参数,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。
  • 如果Bucket的类型为Archive,则不能调用该接口,否则返回400错误,错误码为OperationNotSupported。


  • 示例


    [backcolor=transparent]请求示例: PUT /link-to-oss.jpg?symlink HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Cache-control: no-cache
    Content-Disposition: attachment;filename=oss_download.jpg
    Date: Tue, 08 Nov 2016 02:00:25 GMT
    Authorization: OSS qn6qrrqxo2oawuk53otfj byc:kZoYNv66bsmc10+dcGKw5x2PRrk=
    x-oss-symlink-target: oss.jpg


    [backcolor=transparent]返回示例: HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Tue, 08 Nov 2016 02:00:25 GMT
    Content-Length: 0
    Connection: keep-alive
    x-oss-request-id: 582131B9109F4EE66CDE56A5
    ETag: "0A477B89B4602AA8DECB8E19BFD447B6"

    展开
    收起
    青衫无名 2017-10-20 11:38:15 2224 分享 版权
    阿里云 AI 助理回答

    您提供的信息详细介绍了如何在阿里云对象存储(OSS)中使用Put Symlink API来创建符号链接。这个操作允许您在OSS中创建一个指向另一个OSS对象的快捷方式,类似于文件系统中的软链接。下面是根据您的描述整理的关键点和示例解析:

    请求语法

    PUT /ObjectName?symlink HTTP/1.1
    Host: BucketName.oss-cn-hangzhou.aliyuncs.com
    Date: GMT Date
    Authorization: SignatureValue
    x-oss-symlink-target: TargetObjectName
    

    请求Header说明

    • x-oss-symlink-target: 这个头部字段是必须的,用于指定符号链接指向的目标对象名。

    细节分析

    • 目标对象URL编码: TargetObjectName需要进行URL编码。
    • 目标类型限制: 符号链接不能指向另一个符号链接。
    • 延迟检查: OSS在创建符号链接时不会立即验证目标对象的存在性、类型或访问权限,这些检查会在实际访问该链接时执行。
    • 覆盖行为: 如果尝试创建的符号链接名称已存在且有写权限,新请求会覆盖原有链接。
    • User Meta限制: 可以通过添加以x-oss-meta-为前缀的头部来设置用户元数据,但所有用户元数据总大小不得超过8KB。
    • Archive类型Bucket限制: Archive类型的Bucket不支持此操作,尝试调用将返回错误。

    示例

    请求示例展示了如何发起一个创建符号链接的请求,其中link-to-oss.jpg是要创建的符号链接名称,而oss.jpg是它指向的目标对象。

    PUT /link-to-oss.jpg?symlink HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Cache-control: no-cache
    Content-Disposition: attachment;filename=oss_download.jpg
    Date: Tue, 08 Nov 2016 02:00:25 GMT
    Authorization: OSS qn6qrrqxo2oawuk53otfj byc:kZoYNv66bsmc10 dcGKw5x2PRrk=
    x-oss-symlink-target: oss.jpg
    

    返回示例展示了一个成功的响应,包括HTTP状态码200 OK,表示操作成功,以及一些其他响应头信息,如x-oss-request-idETag,这些可以用来跟踪请求和确认对象的状态。

    请注意,实际使用时,您需要替换示例中的BucketNameObjectNameSignatureValue等信息,并确保您拥有相应的访问权限。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答
    问答分类:
    问答地址: