最近更新时间:2026-01-06 18:43:40
KS3支持条件写入,您在写请求中添加If-None-Match 或 If-Match 请求头即可。
If-Match 请求头:
KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值匹配,则上传对象成功,否则失败。可实现判断文件是否变化,防止误覆盖。
If-None-Match 请求头:
KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值不匹配,则上传对象成功,否则失败。
该请求头支持设置通配符*,可实现防止覆盖存储桶中同名对象效果。
方式一
上传对象时,设置请求头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-overwrite与If-None-Match、If-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。
KS3支持条件删除,您在删除请求时添加If-Match 请求头即可。通过条件删除,您可以保护应用程序免受意外删除对象的影响。
If-Match 请求头:KS3将提供的ETag值与KS3中已存在对象的ETag值进行比较,如果ETag值匹配,则删除成功,否则删除失败。可实现判断文件是否变化,防止误删除。
配合使用API::DELETE Object
纯净模式
