php多文件上传方法+js限制上传文件大小
1、网上的帖子大部分说php无法多文件上传,主要原因是<input type=file>标签默认一次只能速爹选择一个文件,其实 HTML5 的 input 标签添加 multiple 属性就可以支持获常著多文件选择。代码如下:
<form id="up" action="upload_file.php" method="post"亲脾 enctype="multipart/form-data">
<input type="file" name="file" multiple="multiple"/>
</form>
2、需要把 input 的name属性设置为数组才能被php正确识别;
<input type="file" name="file[]" multiple="multiple" />
3、顺便添加accept属性,限制上传文件类型。
<input type="file" name="file[]" multiple="multiple" accept="image/*" />
1、在<script>中用js代码获取选择的文件大小比较复杂,应该给input标签的change事件绑定函数,用this.files[0].size直接传递文件大小,代码如下:
<input type="file" name="file[]" multiple="multiple" onchange="filesize(this.files)" />
<script>
function filesize(files)
{alert("文件大小是"+files[0].size)}
</script>
2、由于是选择多个文件,应使用this.files.length获取选择的文件数量,然后用for循环使用下标获取每个文件的大小,累加计算选择的总文件大小:
var t=0; //记录文件累加大小。
for(i=0;i<files.length;i++){t+=files[i].size;}
3、判断 t 值是否超过限制,这里直接获取的size是字节值,如果我们限制的文件大小是10MB,可以使用t/1024/1024把字节值换算成MB,然后进行比较,如果超过限制,则弹出提示并重置表单。代码如下:
var t=0; //记录文件累加大小。
for(i=0;i<files.length;i++){t+=files[i].size;}
t=t/1024/1024;
if(t>10){alert("文件大小超过限制,请重新选择。");document.getElementById("up").reset()}