input file实现多选和限制文件上传类型

 
  1. <!-- input file accept 属性设置可上传文件的类型 multiple属性设置可多文件上传-->

  2. <!-- accept 并未真正的实现限制上传文件类型,只是在选文件的时候有限制,

  3. 如果选文件的时候手动修改上传文件的类型,还是可以上传其他文件的。

  4. 因此,要实现只上传accept属性指定的文件类型,还必修结合js来实现-->

  5. <input type="file" accept=".doc,.docx" multiple>

 

 

 
  1. //取出上传文件格式的后缀名

  2. var fileAccept = $("#id").val().split(".")[1];//获取上传文件的后缀

  3. if( fileAccept!="doc" && fileAccept!="docx" ){

  4. alert("只能上传.doc和.docx的文件!");

  5. }

 

 
  1. //获取多文件上传的所有文件名

  2. var filePaths = $("#id")[0].files;//或者这样写 document.getElementById("id").files;

  3. for( var i=0;i<filePaths.length; i++ ){

  4. filePaths[i].name;

  5. }

1.在input标签中加入 multiple 属性,可以在一个输入框中选择多个文件进行上传

<input type="file" name="img" multiple="multiple" />
当然,这样也是一样的: 
<input type="file" name="img" multiple />

2.很多时候上传的时候,我们要限制一下上传文件类型(

在windows中主要是限制后缀名
),或者是把选择的文件名(路径)输出到当前页面,,
这需要用js取得选择文件的名字:

  document.getElementById("input").files[i].name

最后注意:Internet Explorer 9及更早 IE 版本不支持 input 标签的 multiple 属性。
附一段Demo:

<!DOCTYPE HTML>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<script type="text/javascript">
function onc(){
var files = document.getElementById("input").files;
for(var i=0; i< files.length; i++){
alert(input.files[i].name);
}
}
</script>
<form action="/example/html5/demo_form.asp" method="get">
选择图片:<input type="file" id="input" name="input" οnchange="onc()" multiple="multiple" />
<input type="submit" />
</form>
<p>请尝试在浏览文件时选取一个以上的文件。</p>

</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <title>测试文件上传</title>
      <script type="text/javascript" src="js/jquery%20v3.3.1.js"></script>
      <script type="text/javascript">
            //③创建fileLoad方法用来上传文件
            function fileLoad(ele){
                  //④创建一个formData对象
                var formData = new formData();
                //⑤获取传入元素的val
                var name = $(ele).val();
                  //⑥获取files
                var files = $(ele)[0].files[0];
                //⑦将name 和 files 添加到formData中,键值对形式
                formData.append("file", files);
                formData.append("name", name);
                $.ajax({
                    url: "test.php",
                    type: 'POST',
                    data: formData,
                    processData: false,// ⑧告诉jQuery不要去处理发送的数据
                    contentType: false, // ⑨告诉jQuery不要去设置Content-Type请求头
                    beforeSend: function () {
                       //⑩发送之前的动作
                        alert("我还没开始发送呢");
                    },
                    success: function (responseStr) {
                       //11成功后的动作
                        alert("成功啦");
                    }
                    ,
                    error : function (responseStr) {
                        //12出错后的动作
                        alert("出错啦");
                    }
                });
            }
            $(function () {
                var $input =  $("#upLoad");
                // ①为input设定change事件
                $input.change(function () {
                //    ②如果value不为空,调用文件加载方法
                    if($(this).val() != ""){
                        fileLoad(this);
                    }
                })
            })
      </script>
</head>
<body>
      <form action="">
            <input type="file" id="upLoad">
      </form>
</body>

</html>
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值