0026-00000001

问题描述

目标文件不存在。

问题原因

您发起了GetObject等文件访问请求,但是您访问的目标文件不存在,或目标文件的指定版本不存在。其他类似的涉及到文件访问的请求如果被访问文件不存在,也会遇到类似问题,比如CopyObject请求中,如果x-oss-copy-source指定的文件不存在,也会返回该错误。

一个Object不存在的原因可能有:

  • 文件上传失败。

  • 触发生命周期管理规则,Object被删除。

  • Object被其他具有合法权限的用户通过OSS控制台、OSS客户端或API等方式删除了。

  • 目标Bucket与其他Bucket存在跨区域复制关系,其他Bucket中执行的删除操作被同步到目标Bucket中,此时Object也会被删除。

问题示例

比如您发起了如下请求:

PUT /xyz.txt HTTP/1.1
Host: destbucketname.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-copy-source: /examplebucket/abc.txt

如果存储空间examplebucket中没有名为abc.txt的文件,服务端就会返回该错误。

解决方案

  • 验证Object是否存在:

    • 如果想验证您的请求访问的文件是存在的,可以使用HeadObject接口,如果返回的HTTP状态码为404则说明目标文件或版本不存在。

    • 如果Bucket开启了多版本且您在请求中指定了VersionID,请确认您提供的VersionID对应的文件版本是存在。您可以通过ListObjectVersions(GetBucketVersions)获取Object的所有版本ID。

  • 扩展解决方案:

    • 确保请求的Object命名符合规范。Object名称不能以正斜线(/)或者反斜线(\)开头,需使用UTF-8编码,且长度必须在1~1023字符之间。

    • 检查OSS设置的生命周期规则,确认请求的Object未触发删除规则。详情请参见基于最后一次修改时间的生命周期规则介绍

    • 确认其他具有合法权限的用户未删除请求的Object。

    • 检查Bucket配置的跨区域复制规则,确认请求的Object未被删除。详情请参见跨区域复制概述

相关文档