通用问题

最后更新时间:2021-07-12 17:13:02

    通过指定文件流或文件句柄方式上传时,实际上传的内容被截断或大小为0,该如何处理?

    当使用文件流或文件句柄等方式上传时,该流或句柄通常会包含一个偏移量指针,如果您在通过 COS 上传前使用了该流或句柄,那么其偏移量指针可能没有指向文件的起始位置,SDK 上传时默认从该偏移量指向位置开始读取内容,因此可能导致内容被截断或直接上传了空文件。建议您检查该偏移量,在必要时手动将偏移量指向起始位置。

    上传完成后怎么获取文件的 URL?

    COS 的对象访问地址(文件 URL)使用固定格式拼接,您可参考 对象概述- 对象访问地址 进一步了解。

    上传文件报错“临时密钥过期”,该如何处理?

    请您按照以下步骤进行排查:

    1. 请检查您当前运行程序的机器时间是否准确,若有误请修改您的机器时间为正确时间。
    2. 请检查您设置的过期时间(expirationDate)是否小于当前时间,若当前时间大于过期时间则会导致签名过期,您需要修改过期时间重新生成临时密钥。
    3. iOS SDK 在初始化时会使用到 QCloudSignatureProvider 和 QCloudCredentailFenceQueueDelegate 两个协议,而 QCloudCredentailFenceQueue 脚手架,会对临时密钥进行缓存与复用,您可以通过重新初始化 credentialFenceQueue 实例更新缓存,避免使用到已过期的临时密钥。详细指引请参见 iOS SDK 创建 COS 服务实例

    如何确认文件上传成功?

    COS 中每个对象对应一个 Etag 值,文件上传成功后会返回 String 类型的 Etag 值,上传成功返回的 Etag 不为 NULL,可以通过添加判断条件来确认文件是否上传成功。

    已经设置了防盗链,如何在 App 中请求已设置防盗链的对象?

    可以在发送请求时加上携带指定 referer 的 Header,即可正常请求到对象。

    生成预签名链接是否会产生网络请求和费用?是否会有延迟?

    生成预签名链接为本地逻辑,不会产生网络请求,因此没有额外的网络延迟,也不会产生额外的费用。当您需要获取预签名链接时,您可以在任何时候调用 SDK 的接口生成预签名链接。

    COS 预签名 URL 如何自定义域名的 URL?

    预签名 URL 方法是固定的默认域名,需要您自身通过编码进行替换。

    COS SDK 如何创建目录?

    COS 中的目录是虚拟的,实际是一个以 / 结尾的对象。您可以调用上传对象接口,创建一个以 / 结尾的对象键即是一个目录。可参考 小程序 SDK 创建目录示例

    使用 COS SDK 获取 ObjectList,同样的前缀规则和数据结构返回不同的结果?

    为了满足用户使用习惯,对象存储在控制台、COSbrowser 等图形化工具中模拟了「文件夹」或「目录」的展示方式,具体实现是通过创建一个键值为 project/,内容为空的对象,展示方式上模拟了传统文件夹。因此通过 SDK 获取的 ObjectList 会包含对象名以 / 结尾的空对象。