所有的代码总是有寿命的,尤其是前端
使用struts2上传文件的时候后台设置了maxFileSize,为了用户体验,我们需要在前端判断待上传文件的大小。如果超出设置的最大值,我们简单alert一下,提醒用户重新上传。为此,一个新的技术问题出现了:如何使用js或者jq统计表单文件的大小?
在百度上搜索了许多方法,资料大都是比较久远的时代的代码。在自己机器上测试的时候却是经常性的行不通,控制台频繁报错:undefined function。
时代在进步,技术在发展,一些老旧的代码终究还是要被淘汰。
这里提供一个使用jq统计表单文件总大小的方法:在谷歌浏览器上测试通过
简单解释一下:
获取文件总大小的大体思路是这样的:
在提交表单前,先遍历file控件,获取每个file控件的引用,使用$(this)[0].files[0].size方法获取当前文件的字节数。所以最后与设置的文件最大值比较的时候需要转换为MB。
前端界面代码如下:
<form action="mulFileUpload.action" method="post" enctype="multipart/form-data"> <p>文件上传最大值为 <span>100</span>M</p> 欢迎登录: <s:property value="%{#session.student.nickName}"/><br> <div>上传作业: <input onchange="showAddBtn()" type="file"></div> <div> <!--添加新文件--> </div> <button type="button" hidden="hidden">再上传一个</button> <!--选择文件名称上传--> <!--判断文件大小,重复上传同一个文件,一次上传多个重复文件--> <br> <s:fielderror/> <input type="submit" value="submit"> </form>