js获取HTML5 多文件file选择的数量

我用的是HTML5multiple="multiple"上传多张图片,该怎么用JS控制文件选择的个数在10个之内。按提交表单再测试即可,谢谢大家。... 我用的是HTML5 multiple="multiple" 上传多张图片,该怎么用JS控制文件选择的个数在10个之内。按提交表单再测试即可,谢谢大家。 展开
 我来答
hmliakop
2018-12-17 · TA获得超过1731个赞
知道答主
回答量:21
采纳率:0%
帮助的人:9175
展开全部

1、并没有原生的方法控制个数。

2、解决办法:等选择完了用js去计算有多少个,如果超出了就提示。思路如下:

1)你可以在选择完文件后,你的input的onchange事件中,判断event.target.files.length就可以知道你的文件多少了。

2)在onchange事件中使用

if (event.target.files.length > 10) {
console.log("图片太多啦!超过十张啦!");
let files = event.target.files
files = Array.from(files).slice(0,10)
//此处写你的上传接口,参数就是files
console.log("只上传10张哦",files)
}

这个方法可以限制文件只需要上传选中的前10个。

扩展资料:

1、关于input标签上传文件,还有一个属性是accept。可以限制只能上传图片类型,这样可以避免用户上传很多非图片的文件,不好处理。使用方法:<input id="File1" type="file"  accept="image/*"  />

2、调用接口上传文件的方法,可以使用FormData,FromData 是一次 http mulitpartfrom-data 的请求内容可以使用 append 方法向其添加名词对,然后使用 XMLHttpRequest 的 send() 方法发送.

eg:
var fileObj = new FromData();
fileObj.append('key',value);   // value 可以是一个字符串 string 也可以是一个 blob (代表,file对象)
var xhr = new XMLHttpRequest();
xhr.open('POST','url',true);
xhr.send(fileObj);

参考资料:

MDN技术文档-<input type='file'/>

大野瘦子
高粉答主

2018-12-25 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.5万
展开全部

<form onsubmit="return fileCountCheck(this);">

<input type="file" name="mulUp[]" multiple="multiple" required="required" />

<input type="submit" />

</form>

<script type="text/javascript">

function fileCountCheck(objForm){

if (window.File && window.FileList) {

var fileCount = objForm["mulUp[]"].files.length;

if(fileCount > 10){

window.alert('文件数不能超过10个,你选择了' + fileCount + '个');

}

else {

window.alert('符合规定');

}

}

else {

window.alert('抱歉,你的浏览器不支持FileAPI,请升级浏览器!');

}

return false;

}

</script>

扩展资料:

java获取路径,文件名的方法总结

1、文件路径获取

Thread.currentThread().getContextClassLoader().getResource(“”) //获得资源文件(.class文件)所在路径 

ClassLoader.getSystemResource(“”) 

ClassName.class.getClassLoader().getResource(“”) 

ClassName.class .getResource(“/”) 

ClassName.class .getResource(“”) // 获得当前类所在路径 

System.getProperty(“user.dir”) // 获得项目根目录的绝对路径 

System.getProperty(“java.class.path”) //得到类路径和包路径

其中ClassName为类名。

2、文件名获取

String fName =” D:\java\workspace\netmanager01\resources\mibfiles\wtView.mib “; 

(“\”,java中需要转义) 

第一种:

File tempFile =new File( fName .trim());  

String fileName = tempFile.getName();     

第二种:

fName = fName.trim();  

fileName = fName.substring(fName.lastIndexOf("/")+1);  

或者  

fileName = fName.substring(fName.lastIndexOf("\\")+1);  

第三种:

fName = fName.trim();  

String temp[] = fName.split("\\\\"); //split里面必须是正则表达式,"\\"的作用是对字符串转义,其中split("\\\\")的作用是:按照"\\"为分隔符,将路径截取,并存入数组,如下:temp[]=[,D:,java,workspace,netmanager01,resources,mibfiles,wtView.mib]  

fileName = temp[temp.length-1];(取出最后一个)  

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔丞飞
高粉答主

2018-12-25 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

<form onsubmit="return fileCountCheck(this);">

<input type="file" name="mulUp[]" multiple="multiple" required="required" />

<input type="submit" />

</form>

<script type="text/javascript">

function fileCountCheck(objForm){

if (window.File && window.FileList) {

var fileCount = objForm["mulUp[]"].files.length;

if(fileCount > 10){

window.alert('文件数不能超过10个,你选择了' + fileCount + '个');

}

else {

window.alert('符合规定');

}

}

else {

window.alert('抱歉,你的浏览器不支持FileAPI,请升级浏览器!');

}

return false;

}

</script>

扩展资料

<!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>

<input type="file" id="input" name="input" multiple="multiple" />

<button onclick="onc()">查看文件</button>

</form>

<p>请尝试在浏览文件时选取一个以上的文件。</p>

</body>

</html>

参考资料:百度百科 html5

百度百科 File (计算机术语)

百度百科 javascript



本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zliscool16888
2017-12-18
知道答主
回答量:11
采纳率:0%
帮助的人:2.6万
展开全部

希望对你有用,input file 的 this.files是只读属性,浏览器安全因素不允许修改,所以不能直接修改input 的内容,只能通过间接保存files的值到某对象之后,通过其它方式来实现控制个数

<div class="row">
    <div class="col"><input id="FilesWithTen" type="file" multiple="multiple"/></div>
</div>


<script>
        $(function() {
            $("#FilesWithTen").change(function() {
                var files = this.files;
                if (files && files.length > 10) {
                    alert("超过10");
                    this.value = "" //删除选择
                   // $(this).focus(); //打开选择窗口
                    
                }
            })
        })
    </script>
或者
    <script>
        $(function() {
            $("#FilesWithTen").change(function() {
                var temp = [];
                var files = this.files;
                if (files && files.length > 10) {
                    //Array.prototype.push.apply(temp, files);
                    for (var i = 0; i < 10; i++) {
                        temp.push(files[i]);
                    }
                    this.value = ""; //因为files =》 FileList是只读的,所以不能直接修改input type=file 的值,
                    //只能置null,所以只能通过js提交action,简单的方式就是超过10个,置null,用户在选择一次
                    $.ajax({
                        url: 'action',
                        type: 'post',
                        data: new FormData().append("s",temp),
                        success: function(rs) {
                        }
                    })
                }
            })
        })
    </script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2013-06-12 · TA获得超过8613个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4502万
展开全部
  <form onsubmit="return fileCountCheck(this);">
 <input type="file" name="mulUp[]" multiple="multiple" required="required" />
 <input type="submit" />
  </form>
  <script type="text/javascript">
 function fileCountCheck(objForm){
  if (window.File && window.FileList) {
   var fileCount = objForm["mulUp[]"].files.length;
   if(fileCount > 10){
    window.alert('文件数不能超过10个,你选择了' + fileCount + '个');
   }
   else {
    window.alert('符合规定');
   }
  }
  else {
   window.alert('抱歉,你的浏览器不支持FileAPI,请升级浏览器!');
  }
  return false;
 }
  </script>
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式