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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js获取HTML5 多文件file选择的数量相关的知识,希望对你有一定的参考价值。

我用的是html5 multiple="multiple" 上传多张图片,该怎么用JS控制文件选择的个数在10个之内。按提交表单再测试即可,谢谢大家。

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'/>

参考技术A

<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];(取出最后一个)  

参考技术B

<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



参考技术C

希望对你有用,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>

参考技术D   <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>

本回答被提问者和网友采纳

以上是关于js获取HTML5 多文件file选择的数量的主要内容,如果未能解决你的问题,请参考以下文章

Node.js如何获取文件大小

如何从输入中获取多选文件到c#对象

php + js实现多文件上传问题

HTML5+原生JS实现服务器端目录树中多文件下载

在 Firefox 中为 HTML5 多文件输入选择目录?

在 Firefox 中为 HTML5 多文件输入选择目录?