整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Html5 上传图片 移动端、PC端通用

Html5 上传图片 移动端、PC端通用

博客园注册账号有些天了,感觉有些许欣慰,自己写的东西有人在看,有人在评论很是开心。(ps: 满足一下虚荣心吧!)

废话不多说了,说一下今天给大家分享的是 html5上传图片。我们是在移动端使用的,但是这个在pc上也通用兼容性我只在谷歌测试过。之前一直用的angular写的《用HTML5的File API做上传图片预览能》。今天摒弃angular的东西分享一个html5 + js 图片上传案例。那么今天还是按照一定的步骤来讲吧。

HTML 上传图片

HTML

第一步创建html,我们在页面中放置一个文件选择的input#upload(PS:偷懒一下,这里就不再次写案例了直接复制的我们的页面)

<div class="con4">
     <span class="btn upload">上传<input type="file" class="upload_pic" id="upload" /></span>
 </div>

CSS

注: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;
}

Javascript

通过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请求
         ... ...
     }
};

写到这里我们已经完成了图片上传的功能了,大家有兴趣的自己动手尝试一下,不懂的地方或者我写错的地方一定要找我哦。

FileReader的方法和事件

参数/事件描述
方法
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