开发者社区> 问答> 正文

内容协作平台如何进行文件上传?

内容协作平台如何进行文件上传?

展开
收起
小天使爱美 2020-03-30 18:32:55 954 0
2 条回答
写回答
取消 提交回答
  • 文件上传步骤 CCP的文件上传流程包含四个阶段,其中步骤2在只有一个分片时不需要

    1.初始化文件上传:调用创建文件接口,初始化文件上传; 2.获取分片上传地址:当文件多分片上传时,调用获取分片上传地址接口,获取后面分片的上传地址; 3.上传文件:使用给http上传数据的方式将数据上传到步骤3返回的地址中; 4.合并文件:当前所有的分片上传完成后,调用完成文件上传,完成上传流程。 文件上传限制 单个文件分片最大限制5GB 因服务端使用流式计算SHA值,单个文件的分片需要串行上传,不支持多个分片平行上传 分片不允许覆盖 秒传和预秒传 CCP提供调用者只传输数据指纹,服务端根据指纹判断数据是否已经存在,如果已经存在,直接保存数据指针,快速完成文件上传,极大降低数据上传量,同时降低上传时延,提升用户体验,但需要调用者对使用场景有一定预估,因秒传有一定的副作用,需要在调用端计算数据的md5和sha1值,如果在创建大量非重复文件场景,建议不使用。

    秒传调用方式 在调用创建文件时填写如下字段:size、content_hash、content_hash_name(sha1)、content_md5,CCP系统将进行数据指纹检测,并根据检测的接口返回不同的值:

    如果系统返回rapid_upload=true, 则表明秒传成功,直接返回新生成的file_id,完成秒传 如果系统返回rapid_upload=false,则表明Domain中无相同的数据,用户需要上传文件数据 预秒传 当文件较大(如1GB以上)时,计算整个文件的sha1、md5将花费较大的资源,但可能是数据是第一次上传,可以只计算前1KB的sha1,调用创建文件接口,将计算的sha1填写到pre_hash字段中,CCP系统将进行数据指纹检测,并根据检测的接口返回不同的值:

    如果系统返回http_status_code为409, 则表明预秒传匹配到可能的数据,再次调用秒传流程 如果系统返回rapid_upload=false,则表明预秒传没有匹配到对应的数据,直接上传数据 小文件单分片上传 对于小文件(如10M以下)在非弱网环境下,文件可以在几秒中内完成上传,为了减少和服务端的交互,可规划单个分片上传。CCP在创建文件的返回信息中中会返回以第一个分片的上传信息,对于小文件可省去上传步骤的第三步。

    小文件上传方案

    大文件分片断点续传 因大文件上传时间长,需考虑以分片为单位的断点续传。简单流程如下:

    分片上传方案一

    上述这种方式有个缺点:在每次上传文件分片之前都需要获取一次uploadURL,解决这个问题有两种方式,

    将获取分片上传地址和上传分片数据并发处理,一个并发串行上传分片数据,通过另外一个并发预获取分片上传地址,这样在分片上传过程中可执行进行。另外,获取分片上传地址可一次获取多个,以减少和服务端的交互。但一次获取的分片数量也不能太多,每个分片上传地址的有效期为15分钟,如果上传地址过期,需根据错误码,重新获取上传地址。 分片上传方案二

    2020-03-30 23:36:21
    赞同 展开评论 打赏
  • 为你找到了文件上传的文档说明,https://help.aliyun.com/document_detail/138820.html?spm=a2c4g.11186623.6.591.7264257eTNsZGT

    2020-03-30 22:52:18
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
266-新平台:优化...1506601433.pdf 立即下载
基于浏览器的实时构建探索之路--玄寂 立即下载
QQ移动页面框架优化实践 立即下载