博客园注册账号有些天了,感觉有些许欣慰,自己写的东西有人在看,有人在评论很是开心。(ps: 满足一下虚荣心吧!)
废话不多说了,说一下今天给大家分享的是 html5上传图片。我们是在移动端使用的,但是这个在pc上也通用兼容性我只在谷歌测试过。之前一直用的angular写的《用HTML5的File API做上传图片预览能》。今天摒弃angular的东西分享一个html5 + js 图片上传案例。那么今天还是按照一定的步骤来讲吧。
HTML 上传图片
第一步创建html,我们在页面中放置一个文件选择的input#upload(PS:偷懒一下,这里就不再次写案例了直接复制的我们的页面)
<div class="con4"> <span class="btn upload">上传<input type="file" class="upload_pic" id="upload" /></span> </div>
注:css 写的有些乱哈,看不懂的可以问我,或者直接自己写一下就ok。
.con4{ width: 80%; height: auto; overflow: hidden; margin: 15% auto 0 auto; color: #FFFFFF; } .con4 .btn{ width: 45%; height: 40px; line-height: 40px; text-align: center; background: #d8b49c; display: block; font-size: 16px; border-radius: 5px; } .upload{ float: left; position: relative; } .upload_pic{ display: block; width: 100%; height: 40px; position: absolute; left: 0; top: 0; opacity: 0; border-radius: 5px; }
通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。
//获取上传按钮 var input1=document.getElementById("upload"); if(typeof FileReader==='undefined'){ //result.innerHTML="抱歉,你的浏览器不支持 FileReader"; input1.setAttribute('disabled','disabled'); }else{ input1.addEventListener('change',readFile,false); }
然后,当file_input的change事件触发时,调用函数readFile。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。
function readFile{ var file=this.files[0]; if(!/image\/\w+/.test(file.type)){ alert("文件必须为图片!"); return false; } var reader=new FileReader; reader.readAsDataURL(file); //当文件读取成功便可以调取上传的接口,想传哪里传哪里(PS: 你们可以把你们的靓照偷偷发给我!) reader.onload=function(e){ var data=this.result.split(','); var tp=(file.type=='image/png')? 'png': 'jpg'; var a=data[1]; //需要上传到服务器的在这里可以进行ajax请求 ... ... } };
写到这里我们已经完成了图片上传的功能了,大家有兴趣的自己动手尝试一下,不懂的地方或者我写错的地方一定要找我哦。
参数/事件 | 描述 |
方法 | |
abort | 中断读取 |
readAsText(file, [encoding]) | 将文件读取为文本 该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。 |
readAsBinaryString(file) | 将文件读取二进制码 通常我们将它传送到后端,后端可以通过这段字符串存储文件 |
readAsDataURL(file) | 将文件读取为DataURL 将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件。 |
事件 | |
onabort | 数据读取中断时触发 |
onerror | 数据读取出错时触发 |
onloadstart | 数据读取开始时触发 |
onload | 数据读取成功完成时触发 |
onloadend | 数据读取完成时触发,无论成功失败 |
祝大家学习愉快!终于写完了估计还是有错别字的。大家有不同见解的记得给我留言哦![小月博客]
017年,将有超过75%的互联网流量来自移动端,移动互联网的商机无可限量,企业除了注重电脑网站建设,也开始把目光转向了手机建站,费用自然成了决定企业选择哪家建站公司的关键因素,收费高大家承受不起,收费低又担心质量没保证。
网站建设费用主要分为两部分,一部分是固定可以预见的,另一部分是潜在费用,难以估计的。
先说固定的部分,买域名、空间、建站系统。常规的.cn/.com域名,每年100元以内,手机站的空间800元以内已经能买很不错的,建站系统在网上有很多免费的,要做HTML5网站的企业还要看清楚建站系统支不支持HTML5。固定费用就1000元左右。
潜在费用主要是网站制作、推广和维护的费用,这才是很多企业建站的绊脚石。不会程序的企业找人做手机站,要加一般2000元起;推广还要找人做SEO优化或者百度竞价,价格都要千元以上,维护人员工资也是一笔不小的开支。潜在费用加起来,5000元以上是必须的。
此外,还要了解服务商的技术实力、服务质量和以往案例,以免服务商出问题后网站跟着遭殃。
手机网站还有一个局限性,不一定兼容所有的手机屏幕尺寸,要做很多都市场调研,了解主流尺寸,分别定制专属的手机网站,这个过程会耗费企业很长时间。
其实,中小企业要想拥有HTML5手机站还有一个办法,就是把自己的网站做成响应式。建站宝盒V9就能实现,企业只需做一个电脑网站,手机站、微信站也有了,还能根据大家的屏幕大小个性化布局,带给用户新鲜的体验。全程傻瓜式操作,会打字就能建站,做HTML5网站就像做PPT一样简单。后期只需维护一个后台,不用钱就能获得免费推广。重点来了,价格十分接地气,不用一千元就能搞定企业网站,有营销功能的行业建站解决方案也就两千元,真正为中小企业省钱,质量用过的都说好。
建站宝盒V9,免费公测即将开启:http://www.iisp.com/special/v9special/index.php
更多建站&互联网行业资讯,敬请关注微信公众号:耐思尼克(iisp-com)
TML5实现大文件分片上传思路,利用HTML5分片上传超大文件思路,WEBUPLOADER 支持 超大上G,多附件上传,JS 大文件分割/分片上传,百度WEBUPLOADER上传视频等大文件,WEBUPLOAD组件实现文件上传功能和下载功能,JS大文件切片上传,断点续传实现DEMO,前端上传大文件的解决方案,前端上传大文件处理(切片、断点续传),前端大文件上传优化方案——分片上传,vue大文件上传解决方案,vue大文件上传解决方案10G,vue大文件上传解决方案50G,vue大文件上传解决方案100G,html5如何实现大文件断点续传、秒传,
java如何实现大文件断点续传、秒传,SpringBoot如何实现大文件断点续传、秒传,SpringMVC如何实现大文件断点续传、秒传,SpringCloud如何实现大文件断点续传、秒传,
webuploader如何实现大文件断点续传、秒传,百度webuploader如何实现大文件断点续传、秒传,html5实现大文件断点续传、秒传,vue如何实现大文件断点续传、秒传,前端如何实现大文件断点续传、秒传,JavaScript如何实现大文件断点续传、秒传,
html5大文件断点续传、秒传解决方案,html5大文件断点续传、加密上传解决方案,html5大文件断点续传、加密存储解决方案,html5大文件断点续传分片解决方案,html5大文件断点续传分块解决方案,html5大文件断点续传分割解决方案,html5大文件断点续传切割解决方案,
在网上找过相关的资料,论坛里面也有网友交流过,但是都不太令人满意。
给政府做的一个项目。实际上客户那边对具体的技术实际不关心。
研发部门的同事调研过百度的webuploader这个组件,发现他实际上就是对Flash和HTML5进行了一个封装,本质还是调的HTML5的API,之前在项目中也用过,尝试过,但是最终都不太满意,一个是兼容性非常差,说的是兼容IE,但是在IE用的是Flash,在很多用户的电脑上用不了,卡顿崩溃发生的太频繁,文件上传的数量一多比如几千个,前端页面就开始卡了,用户体验非常差。这些问题研发部的同事都向百度反应过,但是百度webuploader那边一直没人回,基本上没人管,领导说要求付费提供技术支持,那边也是没人回,联系不上他们任何人。
webuploader这边连个开发人员都联系不到,这个是怎么回事?
搞的我们领导现在基本上不怎么考虑国内这些免费开源的项目,研发部门的同事称这些项目为免费坑人项目。
用户上传的文件比较大,有20G左右,直接用HTML传的话容易失败,服务器也容易出错,需要分片,分块,分割上传。也就是将一个大的文件分成若干个小文件块来上传,另外就是需要实现秒传功能和防重复功能,秒传就是用户如果上传过这个文件,那么直接在数据库中查找记录就行了,不用再上传一次,节省时间,实现的思路是对文件做MD5计算,将MD5值保存到数据库,算法可以用MD5,或者CRC,或者SHA1,这个随便哪个算法都行。
分片还需要支持断点续传,现在HTML5虽然提供了信息记录功能,但是只支持到了会话级,也就是用户不能关闭浏览器,也不能清空缓存。但是有的政府单位上传大文件,传了一半下班了,明天继续传,电脑一关结果进度信息就丢失了,这个是他们的一个痛点。
切片的话还有一点就是在服务器上合并,一个文件的所有分片数据上传完后需要在服务器端进行合并操作。
聊下HTML5吧,怎么说呢,HTML5也就是chrome提供的一个API来实现文件分片,反正基本的需求,小文件用是能用,但是用起来多多少少还是有点别扭,扩展性,安全性,稳定性用户那阵都不太满意,关键是什么,我们是没办法对HTML5进行扩展,个性化和定制化开发的,基本上被谷歌给限制死了,这也是现在国产化的意义,希望能够打破这个限制。不然公司的一些产品和业务不太好开展,总不能用户提个需求,我们就说谷歌Chrome没提供API,所我们就无法开发吧。这不是跟客户扯呢。
功能的话支持20G文件上传和续传,支持秒传,支持文件夹上传,支持在服务端保存文件夹层级结构,支持将文件夹层级结构信息保存到数据库中,支持下载时能够将文件夹层级结构下载下来,支持下载文件夹,下载文件夹支持断点续传,支持VUE2,VUE3,React,支持IE,Chrome和信创国产化环境,比如银河麒麟,统信UOS,龙芯,支持加密传输,包括加密上传,加密下载,加密算法支持国密SM4,支持云对象存储,比如华为云,阿里云,腾讯云,七牛云,AWS,MinIO,FastDFS,需要提供手机,QQ,微信,邮箱等联系方式,提供7*24小时技术支持,提供长期技术支持和维护服务,提供远程1对1技术指导,提供二次开发指导,提供文档教程,提供视频教程。1.下载示例
https://gitee.com/xproer/up6-vue-cli
将up6组件复制到项目中
示例中已经包含此目录
1.引入up6组件
2.配置接口地址
接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表
参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de
3.处理事件
启动测试
启动成功
效果
数据库
源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra
源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl
OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc
*请认真填写需求信息,我们会在24小时内与您取得联系。