实战项目新浪微盘第02天云存储介绍_第1页
实战项目新浪微盘第02天云存储介绍_第2页
实战项目新浪微盘第02天云存储介绍_第3页
实战项目新浪微盘第02天云存储介绍_第4页
实战项目新浪微盘第02天云存储介绍_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、新浪微盘 云存储实践 我要讲什么?云存储上传下载架构, 断点续传, 断点续下,云端文件存储方式,秒传开放平台如何利用好开放平台, 开放平台常见概念, OAuth2.0授权机制网络架构异步访问网络的封装, 网络异常的全局处理实用框架ActionbarSherlock, PullToRefresh下拉刷新, Zxing扫描二维码,微博SSO单点登录,友盟统计,Ant批量打包我还要讲什么?常用开发技巧如何让service常驻? 如何捕获全局异常? 如何访问https?图片加载的缓存机制,居家旅行必备的加密算法我自己的小项目互联网公司的那点事如何写好简历面试注意要点Lets go!什么是云存储?云存储

2、是一个以数据存储和管理为核心的云计算系统。什么是云存储?什么是新浪微盘?视频介绍8新浪微盘开放平台新浪微盘, 不仅仅是一个个人云存储工具, 更是一个开放平台!开放平台地址: Android SDK Github 地址: 开放平台, 为开发者提供一个免费的云存储平台, 开发者可以将自己的应用数据存储在微盘.新浪微盘开放平台微盘AndroidSDKOAuth2 授权各种API调用, 包括文件上传下载, 云端文件删除, 移动, 重命名, 用户空间信息获取等什么是OAuth2 授权OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表

3、),而无需将用户名和密码提供给第三方应用。关键词:AppKeyAppSecrect令牌 : token/accesstoken过期时间优势1. 第三方开发者可以方便的访问主站资源2. 主站用户的账号密码不易泄露什么是OAuth2 授权什么是OAuth2 授权SSO登录OAuth2 授权第一步使用WebView加载登陆网页 通过Get方式传递三个参数: client_id(应用的appkey), redirect_uri(回调地址), display(展示方式, 手机设备为mobile)例如: ?client_id=1750636396&redirect_uri=/&display=mobile

4、OAuth2授权第二步在wap页点击登陆按钮后, 会有一个回调地址, 可以在WebViewClient的shouldOverrideUrlLoading方法中捕获.Redirect URL: 截取这个URL中的code=3ea97ac6d5c1016a70d1c16e98b6f9ca16OAuth2 授权第三步访问这个地址, 获取最终token: 传入以下参数: 获取用户信息 OAuth2 授权返回数据:access_token(认证令牌), expires_in(令牌有效期) , refresh_token(用来刷新令牌的token), uid(新浪微博uid)如: AccessToken:

5、37bfcb66632HDt54vD8mx3mCuNUcbb37; ExpiresTime:1379572780 (过期时间点); RefreshToken:3d3d3066632HDt54vD8mx3mCuNU30fc6; Uid:2788350991这些数据需要加密后保存在本地(DES)API调用用户信息相关接口初始化VDiskAPIVDiskAPI mApi;mApi = new VDiskAPI(session);Account account = mApi.accountInfo();account.quota; /用户微盘总空间Account.consumed; /用户微盘已使用空

6、间API调用获取文件夹下的目录信息Entry metadata = mApi.metadata(path, null, true, false);List contents = metadata.contents;API调用获取文件详细信息Entry metadata = mApi.metadata(path, null, true, false);metadata.fileName();/ 文件名metadata.size; / 文件大小metadata.modified; / 文件修改时间metadata.path; /文件微盘路径API调用复制 Entry metadata = mApi

7、.copy(fromPath, toPath);新建文件夹 Entry metaData = mApi.createFolder(path);删除 Entry metaData = mApi.delete(path);移动 Entry metadata = mApi.move(fromPath, toPath);API调用小文件上传API调用文件下载断点续下本地创建缓存文件: 源文件名.vdisktempreq.setHeader(“Range”, “bytes=” + range + “-”);/ 设置下载范围 Range为本地缓存文件长度下载结束后, 将缓存文件重命名为源文件名称断点续传第

8、一步-分片初始化 /multipart/init传递参数:s3host : 上传服务器域名path: 文件目标路径size: 文件总大小sha1: 文件sha1签名(判断是否可以秒传)part_total: 文件分多少段上传26断点续传初始化返回结果: upload_id: 0c6d42b51d774ee69e2d9bb30a7db3b0,part_sign: 1: part_number: 1, uri: /upload.vdisk.me/partupload/ea2ecc626b9aa7537ec66409c75d73ed?partNumber=1&uploadId=0c6d42b51d7

9、74ee69e2d9bb30a7db3b0 , 2: part_number: 2, uri: /upload.vdisk.me/partupload/ea2ecc626b9aa7537ec66409c75d73ed?partNumber=2&uploadId=0c6d42b51d774ee69e2d9bb30a7db3b0 将该分段信息以对象的形式保存在数据库, 供上传每段分片时读取断点续传第二步-上传1. 循环将每一段文件上传至服务器2. 每段文件上传地址取决于初始化时返回的uri3. 每一段文件上传成功之后, 更新本地分段信息, 记录下已经上传到第几段.4. 如果上传某段过程中失败了,

10、下次会从这段文件的开始处上传, 而不会整个文件重传, 从而实现断点续传.断点续传第三步-文件合并文件合并接口 plete所有分段上传成功后, 走合并文件接口, 服务器端进行合并传递如下参数:upload_id: 初始化分片时得到的上传upload_idupload_key:初始化分片时得到的上传upload_keymd5_list: 本地计算的每段文件的md5, 用逗号隔开, 便于云端对每段分片完整性进行校验云存储实践-Sherlock我们的项目, 准备使用sherlock开源框架进行搭建. 使用这种框架的好处就是, Android任何版本都可以统一actionbar的标准样式, 无需开发者做

11、过多兼容.Sherlock项目Demo演示云存储实践-下拉刷新我们使用开源开发包, pulltorefresh-library通过很简单的使用, 就能达到下拉刷新的目的, 减少了开发工作量云存储实践-引入微盘SDK云存储实践-引入微盘SDK云存储实践-登陆/初始化AppKeyPair, 这是SDK封装的对象, 用来保存当前应用的appkey和appsecrectAppKeyPair appKeyPair = new AppKeyPair(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);/初始化VDiskAuthSession,这是SDK封装

12、的对象, 用来保存当前登陆信息, 并参与登陆相关的逻辑, 这个类是个单例, 只需要初始化一次VDiskAuthSession session = VDiskAuthSession.getInstance(this, appKeyPair, AccessType.APP_FOLDER);/为session设置应用的回调地址session.setRedirectUrl(Constants.REDIREC T_URL);/执行登陆逻辑, 如果本地保存有未失效的登陆信息, 就直接返回, 如果没有等咯信息或信息过期, 会弹出登陆弹窗, 需要用户输入用户名密码.session.authorize(OAut

13、hActivity.this, OAuthActivity.this);云存储实践-应用权限Basic权限和Sandbox(沙箱)权限沙箱机制,应用之间数据不能互相访问 ,保证用户数据不被恶意窃取访问用户的Basic的数据需要较高权限 , 具有Basic权限的应用可以直接操作微盘官方网盘内的文件, 而普通应用只能在自己的沙箱中活动.Basic和sandbox数据共用用户的存储空间.云存储实践-代码实现通过代码, 演示sherlock框架的使用, 并完成登陆页面的开发代码完成微盘主页面数据获取和展示的逻辑完成主页面目录切换逻辑完成列表item右侧控制按钮逻辑, popupwindow的展示, 以

14、及popup的方向判断长按多选逻辑新建文件夹逻辑下载页面开发文件下载及批量下载逻辑云存储实践-代码实现上传页面开发选择文件上传的页面开发文件多选上传逻辑单个文件删除文件批量删除单个文件移动文件批量移动EmptyView的设置用户注销云存储实践-Fragment介绍Fragment要点Fragment作为Activity界面的一部分组成出现可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。云存储实践-Fragment介绍通常, 应当至少实现如下的生命周期方法:onCreate()当创建fragment时, 系统调用该方法. 在实现代码中,应当初始化想要在fragment中保持的必要组件, 当fragment被暂停或者停止后可以恢复.onCreateView()fragment第一次绘制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论