基于javascript html5实现多文件上传

 更新时间:2016年03月03日 08:49:48   作者:weapon-x  
这篇文章主要为大家详细介绍了基于javascript html5实现多文件上传的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例为大家分享了javascript html5实现多文件上传的实现方法,具体内容如下

HTML结构:

<div class="container">
 <label>请选择一个图像文件:</label>
 <input type="file" id="file_input" multiple/>
</div>

顺便说下这个上传的主要逻辑:

  • 用input标签并选择type=file,记得带上multiple,不然就只能单选图片了
  • 绑定好input的change时间,
  • 重点就是如何处理这个change事件了,使用H5新的FileReader接口读取文件并打成base64编码,之后的事就是与后端同学交互着玩啦

JS代码:

window.onload = function(){
  var input = document.getElementById("file_input");
  var result,div;
 
  if(typeof FileReader==='undefined'){
   result.innerHTML = "抱歉,你的浏览器不支持 FileReader";
   input.setAttribute('disabled','disabled');
  }else{
   input.addEventListener('change',readFile,false);
  }<br>     //handler
  function readFile(){
   for(var i=0;i<this.files.length;i++){
    if (!input['value'].match(/.jpg|.gif|.png|.bmp/i)){  //判断上传文件格式
     return alert("上传的图片格式不正确,请重新选择")<br>          }
    var reader = new FileReader();
    reader.readAsDataURL(this.files[i]);
    reader.onload = function(e){
     result = '<div id="result"><img src="http://9i0i.com/pic.php?p='+this.result+'" alt=""/></div>';
     div = document.createElement('div');
     div.innerHTML = result;
     document.getElementById('body').appendChild(div);   //插入dom树      <br>          }
   }
  }
 }

上传多张图片难道就这样实现了吗?

然而并没有,这样只是将图片转换成base64编码后再前端显示,一刷新什么都没有

插入图片后,打开开发者工具看html结构是这样的

 

现实的做法是,我们在处理函数里将文件队列里的文件发送到后端,后端同学呢返回文件对应的MD5加密过文件和路径给前端,前端就拿着这个路径渲染到页面上。

之后再把MD5文件传回给后端,因为上传完后前端一般有删除图片的操作,回传目的就是告诉后端确认那些图片是我们想要的,后端存入数据库里。

说下用jquery如何交互吧

function readFile(){
   var fd = new FormData();
   for(var i=0;i<this.files.length;i++){
    var reader = new FileReader();
    reader.readAsDataURL(this.files[i]);
    fd.append(i,this.files[i]);<br>          }
    $.ajax({
     url : '',
     type : 'post',
     data : fd,
     success : function(data){
      console.log(data)
      } 
    })
} 

FormData也是H5的新接口,用来模拟表单控件的提交,最大的好处呢就是可以提交二进制文件

然后success的回调里面我们拿回了想要的数据后呢,就可以将图片插进去页面啦,类似之前的做法~

上个效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • 30分钟快速实现小程序语音识别功能

    30分钟快速实现小程序语音识别功能

    最近需要在小程序上实现语音识别,将需要用到的功能都总结下,供大家参考。语音识别用的是科大讯飞,文中给出了详细的实现方法介绍,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Javascript中for循环语句的几种写法总结对比

    Javascript中for循环语句的几种写法总结对比

    如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的,javascript中for循环也是非常常用的,下面这篇文章主要介绍了Javascript中for循环的几种写法,需要的朋友可以参考借鉴,一起来看看吧。
    2017-01-01
  • uniapp表单校验超详细讲解

    uniapp表单校验超详细讲解

    这篇文章主要给大家介绍了关于uniapp表单校验的相关资料,Uni-app内置了一些表单验证方法,可以帮助我们对表单进行有效的验证,需要的朋友可以参考下
    2023-10-10
  • 详解es6新增数组方法简便了哪些操作

    详解es6新增数组方法简便了哪些操作

    这篇文章主要介绍了详解es6新增数组方法简便了哪些操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 浅析微信小程序modal弹窗关闭默认会执行cancel问题

    浅析微信小程序modal弹窗关闭默认会执行cancel问题

    这篇文章主要介绍了小程序modal弹窗关闭默认会执行cancel方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 前端路由&webpack基础配置详解

    前端路由&webpack基础配置详解

    这篇文章主要介绍了前端路由&webpack基础配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 简单实现js无缝滚动效果

    简单实现js无缝滚动效果

    这篇文章主要教大家如何简单实现js无缝滚动效果,js轮播图实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 如何利用js在两个html窗口间通信

    如何利用js在两个html窗口间通信

    这篇文章主要介绍了如何利用js在两个html窗口间通信,如果读者们有类似的需求,可以参考下
    2021-04-04
  • 微信小程序实现锚点跳转

    微信小程序实现锚点跳转

    这篇文章主要为大家详细介绍了微信小程序实现锚点跳转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 浅谈Rx响应式编程

    浅谈Rx响应式编程

    在学习Rx编程的过程中,理解Observable这个概念至关重要,常规学习过程中,通常需要进行多次碰壁才能逐渐开悟。这个有点像小时候学骑自行车,必须摔几次才能掌握一样。当然如果有办法能言传,则可以少走一些弯路,尽快领悟Rx的精妙
    2021-06-06

最新评论

?


http://www.vxiaotou.com