资讯专栏INFORMATION COLUMN

DIY七牛前端上传

Yumenokanata / 1674人阅读

摘要:我们的项目中有大量的图片上传和展示。我们选了七牛作为。这其中一个比较重要的原因是因为支持前端直接上传。为了支持前端上传,提供了。将文件分成个上传。需要做如下的操作上传。具体到的话,是这样上传起始的文件内容。在内部还可以分上传。

我们的项目中有大量的图片上传和展示。我们选了七牛作为CDN。这其中一个比较重要的原因是因为qiniu支持前端直接上传。动辄4-5MB的图片不用到我们的app server转一圈还是很好的。为了支持前端上传,qiniu提供了javascript SDK。但是我看了看代码。实在是太大了。7000多行javascript啊。真的有必要吗?有必要吗?有必要吗?遂决定DIY一个。讲真,qiniu提供各种各样SDK。并不推荐直接用REST API来上传。关于API的调用也比较简单。所以还是费了一点力气。因有此文。

像任何事情一样,搞定之后觉得其实蛮简单的。同样像任何事情一样,理解了big picture就会好办多了。

qiniu为了支持大文件,允许用户将文件分块(block)上传。再所有的文件块上传完成之后,再将所有块组成一个完整的文件 - 至少逻辑上是如此。物理存储如何只有qiniu自己晓得。

我们以一个2.5MB的文件为例。将文件分成3个block上传。blockSize设为1MB。需要做如下的操作:

上传block 1。qiniu服务器返回一个ctx来标识这个block。例如abcd

上传block 2。qiniu服务器返回一个ctx来标识这个block。例如efgh

上传block 3。qiniu服务器返回一个ctx来标识这个block。例如ijk

告诉qiniu服务器这个新文件是有abcd, efghijk 三个block组成。并给出key。就可以生成文件了。

具体到API的话,是这样:

POST /mkblk/1048576 上传起始的1MB文件内容。服务器返回ctx以及其它内容。

POST /mkblk/1048576 上传中间的1MB文件内容。服务器返回ctx以及其它内容。

POST /mkblk/524288 上传最后的0.5MB文件内容。服务器返回ctx已经其它内容。

POST /mkfile/2621440/key/。创建文件。在POST的body中将上面的三个ctx依次列出并以逗号分开。这样文件就产生了。如上例,POST的body的内容应为:abcd,efgh,ijk

最后补充两点:

文件内容的读取,以及各个步骤之间的衔接是通过plupload来完成的。这个和官方的SDK也一致。但是代码量要少的多。

qiniu在block内部还可以分chunk上传。只要用/bput API并指定ctx即可。因为有点复杂而且没有什么特别的需求(也许是为了超大文件吧),所以没有采用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79381.html

相关文章

  • 微信公号DIY:训练微信聊天机器人&公号变身图片上传工具

    摘要:使用图灵机器人训练之前在对比聊天机器人实现方案的时候,我试用过图灵机器人,他们号称中文语境下智能渡最高的机器人大脑。 上一篇 一小时搭建微信聊天机器人 介绍了如何搭建一个可用的聊天机器人,但是和机器人聊完你会发现,聊天机器人实在是太傻了,来回就那么几句。这是因为我们给聊天机器人的数据太少,他只能在我们给的训练集中找它认为最合适的。那么,如何导入更多的训练数据呢?我能想到最简单的方法是找...

    anonymoussf 评论0 收藏0
  • 微信公号DIY:MongoDB 简易ORM & 公号记账数据库设计

    摘要:然后又介绍了基于的公号账本应用的数据库设计。欢迎关注公号四月试用。 前两篇 微信公号DIY 系列: 微信公号DIY:一小时搭建微信聊天机器人 微信公号DIY:训练聊天机器人&公号变身图片上传工具 介绍了如何使用搭建&训练聊天机器人以及让公号支持图片上传到七牛,把公号变成一个七牛图片上传客户端。这一篇将继续开发公号,让公号变成一个更加实用的工具账本(理财从记账开始)。 代码: 项目代...

    fobnn 评论0 收藏0
  • 微信公号DIY:MongoDB 简易ORM & 公号记账数据库设计

    摘要:然后又介绍了基于的公号账本应用的数据库设计。欢迎关注公号四月试用。 前两篇 微信公号DIY 系列: 微信公号DIY:一小时搭建微信聊天机器人 微信公号DIY:训练聊天机器人&公号变身图片上传工具 介绍了如何使用搭建&训练聊天机器人以及让公号支持图片上传到七牛,把公号变成一个七牛图片上传客户端。这一篇将继续开发公号,让公号变成一个更加实用的工具账本(理财从记账开始)。 代码: 项目代...

    Backache 评论0 收藏0
  • 微信公号DIY:MongoDB 简易ORM & 公号记账数据库设计

    摘要:然后又介绍了基于的公号账本应用的数据库设计。欢迎关注公号四月试用。 前两篇 微信公号DIY 系列: 微信公号DIY:一小时搭建微信聊天机器人 微信公号DIY:训练聊天机器人&公号变身图片上传工具 介绍了如何使用搭建&训练聊天机器人以及让公号支持图片上传到七牛,把公号变成一个七牛图片上传客户端。这一篇将继续开发公号,让公号变成一个更加实用的工具账本(理财从记账开始)。 代码: 项目代...

    DoINsiSt 评论0 收藏0
  • 开源集锦

    摘要:密码服务层分片分片新思路目前国内流行的开源数据库分片实现都基于的改写分发与结果归并。虽然独立开发人员仍是开源社区的重要组成部分,但如今开源项目的大部分工作由企业开发人员完成。 Android2017 这些技术 —— 你都了解过吗 插件化 热更新 对Android平台,我们通常所说的在线热更新就是,例如对已经发布在应用市场上的宿主APK,当我们从crash统计平台上发现某个函数调用有bu...

    Simon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<