我有一个将 Fine Uploader 的多部分功能与 Amazon S3 结合使用的示例。但是我想知道它应该如何使用。我看到如果我中断了一个大文件的上传,我重新加载页面并再次指定相同的文件,上传将继续。但如何召回简历?是通过会话 cookie 吗?如果用户完全删除了所有 cookie 和历史记录,简历还能正常工作吗?为了恢复中断的上传,需要坚持什么?这一切都取决于为对象生成的密钥吗?只要钥匙是一样的?您能否提供一些简历上传有效的场景以及何时无效?谢谢。
1 回答
恢复功能存在于 Fine Uploader S3 和适用于传统端点的 Fine Uploader 中。对于传统端点,cookie 用于保存有关分块上传进度的信息。但是,Fine Uploader S3 使用localStorage
.
在每个块成功上传到 S3 后,Fine Uploader S3 的 XHR 上传传输处理程序会将该文件的当前状态信息保存localStorage
为一个项目。
该localStorage
项目的密钥由以下数据组成:
- 文件名
- 文件大小
- 最大块大小
- S3 存储桶名称
项目的值localStorage
是一个Object
(存储为字符串),具有以下属性:
- 文件名
- 文件大小
- 文件 UUID
- S3 密钥名称
- # 成功上传的字节数
- 当前时间/日期
- 总块数/部分
- 最后一个块索引成功上传
- S3 分配的上传 ID(在原始“启动分段上传”REST 调用期间从 S3 返回 - 这是每个上传请求的必需部分)
- 部分索引到所有成功上传部分的 etag 值的映射,这是 Fine Uploader S3 必须包含在“完成多部分上传”REST 请求中的信息,该请求在最后一部分上传后发送(要求 S3 合并所有部分) .
当 Fine Uploader S3 的内部 XHR 上传处理程序接收到“开始上传”信号时,它会计算要上传的文件的密钥(使用上面第一个列表中的项目)。如果项目存在localStorage
(在当前域/源上),则使用持久化数据恢复上传。
请注意,localStorage
在 Fine Uploader S3 实例初始化期间会删除所有过期项目。如果日期属性(请参阅上面的第二个列表)超过 7 天,则项目已过期。不过,这个值是可配置的,通过resume.recordsExpireIn
选项.
通过查看Fine Uploader S3 上传处理程序模块源代码,您可以看到所有这些逻辑以及更多细节。