基于云服务的文件跨域上传的研究与实践

基于云服务的文件跨域上传的研究与实践

ID:31360566

大小:109.00 KB

页数:7页

时间:2019-01-09

基于云服务的文件跨域上传的研究与实践_第1页
基于云服务的文件跨域上传的研究与实践_第2页
基于云服务的文件跨域上传的研究与实践_第3页
基于云服务的文件跨域上传的研究与实践_第4页
基于云服务的文件跨域上传的研究与实践_第5页
资源描述:

《基于云服务的文件跨域上传的研究与实践》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于云服务的文件跨域上传的研究与实践  摘要:该文列举了当前几种常见的文件上传方式,该文基于云服务研究了文件跨域上传的解决方案,并指出了每一种文件上传技术,在当前的技术背景下各自存在的优缺点。通过对每一种技术优缺点的权衡,找出一种合适的方案来解决项目中文件跨域上传的问题。  关键词:上传;跨域;同源策略  中图分类号:TP311文献标识码:A文章编号:1009-3044(2016)18-0071-02  1背景  笔者最近在开发一个基于HTML5的社区活动应用商店的项目,该项目主要是面向活动组织者并以WebAPI的方式提供一系列的在线服务,以方便活动发起者进行活动的筹备和组织。其

2、中,有一项云存储功能,方便第三方活动发起者在他自己的网站或APP中通过调用上传API,将活动相关文件譬如活动照片、视频等存储到活动云服务器。该功能涉及文件异步上传、跨域上传等技术难点,即本文的研究重点。  2研究  2.1传统上传方式  浏览器一般都是通过HTTP的POST7方法来实现基本的上传操作。最常见的数据提交方式就是浏览器的原生表单,使用其默认的enctype属性设置application/x-www-form-urlencoded。但是这仅限于上传基本的文本数据,如果要上传文件,可以设置enctype属性为multipart/form-data。具体代码如下:     

3、     但是使用传统方式上传存在许多的弊端。首先,该上传方式属于“同步上传”,就是在上传过程中会把页面“锁死”,用户只能够等待文件上传结束页面刷新完,才能进行下一步的操作。不仅如此,使用传统上传文件方式,上传文件的当前进度以及上传的速度都不得而知,没有一个很好的显示交互过程,就用户角度来说体验很差。而且对于有大量上传任务的用户来说,这种“同步上传”的方式是不能对其进行批量处理的。  2.2异步上传方式  由于“同步上传”存在的弊端,寻找更优的方式来解决上传时页面“锁死”和交互信息不足的问题,成为了开发人员当前急需解决的事。  显然同步上传已经无法解决上述问题,自然就提出异步的解

4、决方式。异步上传文件的方式有很多,本文主要介绍一下异步上传文件中使用Flash、Ajax以及基于HTML5的文件上传方式。  2.2.1Flash上传  Flash是比较常见的上传方法之一。在Flash中上传文件只要对FileReference进行简单的封装就可以实现。通过7FileReference类的方法可使应用程序本地加载和保存数据文件,并与远程服务器之间传输文件数据。另外,Flash的优势在于有较好的文件上传队列,能够自动逐个上传文件,将上传的进度很好的反馈。但是第三方插件毕竟还是需要浏览器的支持,比如Safari不支持Flash,也就造成Flash会存在兼容性的问题,并

5、且就目前Flash的发展来看,Flash也因为资源的消耗严重而不断被放弃使用。也因为如此,其他的上传技术将得到进一步发展。  2.2.2iframe上传  因为Flash这些第三方插件存在兼容性的问题,我们需要一种能够在浏览器上直接使用Web技术来解决的方法。因此想到使用iframe来模拟文件的异步上传操作。实现这种方法很简单,只需要设置form表单的target属性到iframe的name。总体来说,这种基于iframe的表单上传,因为异步、简单,适用于一些简单的上传应用场景。代码如下:    File:        2.2.3HTML5新接口  随着HTML5的发布,添加了

6、一些文件读取的新接口,浏览器处理用户电脑里的文件可以使用以下三个方法:FormDataInterface、FileListInterface、FileReaderAPI。这三个方法分别实现了浏览器从文件打开、选择、读取三个功能。而且由于XMLHttpRequestLevel2很好地兼容了这三个方法,从而允许我们可以使用FormData7将表单中的对象状态转换成可保持或传输的格式,从而实现异步上传一个二进制文件。  document.getElementById("myform").onsubmit=function(e){  e.preventDefault();  varf=e

7、.target,  formData=newFormData(f),  xhr=newXMLHttpRequest();  xhr.open("POST",f.action);  xhr.send(formData);  }  完成将FormData对象通过send()方法传递后,对应的HTTP头信息会自动帮你设置好。不需要再纠结编码的问题。而且就兼容性来说,目前主流的最新版本的浏览器都已经兼容了HTML5,IE也在10以后的版本也开始兼容HTML5。  虽然HTML5已经得到主

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。