开发者社区> 问答> 正文

如何将文件上传到到PhotoStore


上传照片会涉及到和OSS的交互,因此这可能是智能云相册中流程最复杂的功能。本文将详细介绍上传文件到PhotoStore的流程。

上传流程


上传流程如下图所示:
客户端客户端业务服务器业务服务器智能云相册智能云相册OSSOSS获取访问智能云相册临时访问凭证开启上传事务返回上传文件到OSS需要的信息(OSS地址和OSS临时访问凭证)上传文件到OSS指定的路径提交上传事务(文件上传完毕)

上传事务详解


Transaction(上传事务)表示一次照片上传的完整过程。上传事务包括以下几个步骤

开启上传事务(对应API为CreateTransaction


开启事务时客户端告诉智能云相册本次上传文件大小, md5和文件扩展名等信息。文件大小和md5用于上传后的完整性校验,扩展名用于帮助服务端识别文件的类型。
智能云相册在开启事务时会做以下事情:

  • 在PhotoStore对应OSS Bucket中为其分配对应的上传路径。
  • 生成用于上传文件到OSS的临时访问凭证。这组OSS临时访问凭证只能用于上传文件到指定的OSS的路径上,不可做别的任何操作。


上传事务的返回值中包括什么?


上传事务的返回值中包括以下信息:
  • 上传文件到OSS时需要的信息,包括:临时访问密钥,STS Token、OSS的EndPoint、Bucket和对应到OSS的存储路径
  • FileId:存储在OSS上的文件名,它是存储路径的一部分。
  • SessionId:SessionId和对应FileId一一对应,用于防止重复提交事务。提交事务时需要提供SessionId,服务端会验证SessionId和FileId是否匹配。


上传文件到OSS


利用开启上传事务过程中获取到的OSS临时访问凭证,客户端利用OSS的SDK直接将文件上传到OSS中。具体可以参考OSS 上传文件的相关文档。

[backcolor=transparent] 上传事务中返回的OSS临时访问凭证,有效期为1小时,需要在1小时内完成文件上传。


提交上传事务(对应API为CreatePhoto


文件流上传到OSS后,客户端需再次发起请求到智能云相册提交上传事务,智能云相册会对文件做完整性校验,比如大小和md5是否正确。

示例代码


请参考利用SDK来实现 上传照片的示例代码。

展开
收起
云栖大讲堂 2017-10-26 16:32:10 1987 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载