0026-00000002

问题描述

目标文件已存在。

问题原因

您发起了PutObject或CopyObject等涉及到文件写入操作的请求,但是您试图写入的文件名已经存在同名文件,导致写入失败。

问题示例

比如您发起了如下请求:

PUT /object-exist.txt HTTP/1.1
Content-Length:ContentLength
Content-Type: ContentType
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-forbid-overwrite: true

上述请求中x-oss-forbid-overwrite参数的作用是设置是否覆盖同名文件,指定x-oss-forbid-overwrite为true时,表示禁止覆盖同名Object,此时如果examplebucket中已经存在名为object-exist.txt的文件,就会导致该错误。

解决方案

  • 如果想验证您指定的文件名是否存在,可以使用HeadObject接口,如果返回的HTTP状态码为404则说明目标文件不存在。

  • 如果您想覆盖同名文件,可以删去请求中的x-oss-forbid-overwrite请求头,或将其设为false。

  • 如果您想成功上传文件的同时保留旧的版本,推荐开启Bucket的版本控制功能。具体操作,请参见开启版本控制

相关文档