全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

对象条件请求

最近更新时间:2026-01-06 18:43:40

1.条件写入

KS3支持条件写入,您在写请求中添加If-None-MatchIf-Match 请求头即可。

  • If-Match 请求头:

    • KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值匹配,则上传对象成功,否则失败。可实现判断文件是否变化,防止误覆盖。

  • If-None-Match 请求头:

    • KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值不匹配,则上传对象成功,否则失败。

    • 该请求头支持设置通配符*,可实现防止覆盖存储桶中同名对象效果。

配合使用API:

1. PUT Object

2. Complete Multipart Upload

场景一:防止同名文件覆盖

方式一

上传对象时,设置请求头If-None-Match: *,*表示只要目标存储桶中存在同名对象(无论其ETag是什么),上传就会失败,并返回412状态码。

效果:

  • 若存储桶未开启回收站,使用If-None-Match请求头并设置为*,如果存储桶中存在相同文件名(Key),则上传对象失败,返回412 ,反之则上传对象成功。

  • 若存储桶开启回收站:

    • 如不使用 If-None-Match:* 请求头,存储桶中存在相同文件名(Key)时,该对象将被覆盖,被覆盖的对象将进入回收站。

    • 如使用 If-None-Match:* 请求头,存储桶中存在相同文件名(Key)时,上传操作失败,已经存在同名对象无法覆盖。

方式二

您可在上传对象时添加x-kss-forbid-overwrite:true 请求头,若存在同名文件则上传对象失败,返回409 Conflict

x-kss-forbid-overwriteIf-None-MatchIf-Match请求头均可起到条件写的效果,但不推荐3者同时使用,如果同时添加,x-kss-forbid-overwrite优先生效。

场景二:如果对象已更改,防止被覆盖

可以使用If-Match请求头将KS3存储桶中对象的ETag值与您上传提供的ETag值进行比较,如果ETag值不匹配,则上传操作会失败。

  • 未开启回收站时:

    • 使用 If-Match 请求头并设置ETag值,如果存在同名对象且ETag匹配成功,则写入操作将成功返回200 OK。如果ETag不匹配,则写入操作失败并返回412 Precondition Failed

  • 开启回收站时:

    • 使用 If-Match 请求头并设置ETag值,如果存在同名对象且ETag匹配成功,则写入操作成功并返回200 OK,同名文件被覆盖并转存至回收站内。如果ETag不匹配,则写入操作失败并返回412 Precondition Failed

2.条件删除

KS3支持条件删除,您在删除请求时添加If-Match 请求头即可。通过条件删除,您可以保护应用程序免受意外删除对象的影响。

  • If-Match 请求头:KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值匹配,则删除成功,否则删除失败。可实现判断文件是否变化,防止误删除。

配合使用API::DELETE Object

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈