qiniu/dart-sdk

如果上传的文件已存在,如何覆盖文件

philos3 opened this issue · 8 comments

如果上传的文件已存在,如何覆盖文件

存在需要多次上传覆盖的场景,如果每次都是用新的key,将是一种资源浪费

key 如果不设置是后端返回给你的,如果你上传了相同的文件(hash),则似乎会返回给你相同的 key @yinxulai 确认下吧

key是本地传的,文件肯定hash不一样的,因为会一直增量写入log,整个文件的hash值也会变化。

上传报错,提示文件已存在,期望的是直接覆盖,因为key一样的,理应覆盖。

报错信息如下:
StorageStatus.Error
error.type =StorageErrorType.RESPONSE
error.message={error: file exists}
Http status error [614]

flutter SDK支持吗?PutOptions只有下面参数,如何设置,详细的flutter文档没找打,example也没有体现,麻烦告知如何,最好能提供示例代码。

class PutOptions {
/// 资源名,如果不传则后端自动生成
final String key;
/// 强制使用直传,不使用分片
final bool forceBySingle;
/// 使用分片上传时的分片大小,默认值 4,单位为 MB
final int partSize;
/// 并发上传的队列长度,默认值为 5
final int maxPartsRequestNumber;
/// 控制器
final PutController controller;
}

image
这里有个insertOnly=0就可以吗,问题是在哪里设置,flutter sdk 传递??

上传对象本身的写行为设定是通过 putPolicy 来控制的,putPolicy 包含在你的 uploadToken 中, flutter-sdk 作为客户端 SDK,暂时没有直接支持生成 token 的能力,只是消费 uploadToken,所以你需要调整你生成 uploadToken 的参数来达到覆盖的目的

最终意思是需要服务端解决吗