表单提交文件相关

  • 可以使用formData提交含有文件的表单
  • 何时会使用到formdata,以及详细用法,请点击此网站
  • formData不兼容 <=ie9

  • <=ie9 提交含有文件的表单,本人还没有好的解决办法,可以使用jquery.form等插件

  • 获取提交文件的大小以及类型

  • input[type='file'].files是包含多个文件对象的数组,每个对象含有上传文件的相关信息,包含文件名称、大小、类型、修改时间等
  • <=ie9 不支持files属性,所以需要写兼容代码获取文件相关信息
    • 首先获取当前ie版本
     if ((theUA.match(/msie\s\d+/) && theUA.match(/msie\s\d+/)[0]) || (theUA.match(/trident\s?\d+/) && theUA.match(/trident\s?\d+/)[0])) {
           var ieVersion = theUA.match(/msie\s\d+/)[0].match(/\d+/)[0] || theUA.match(/trident\s?\d+/)[0];
           // ieVersion 就是IE版本
}
- 利用此方法获取上传文件的大小,但是需要ie浏览器做一些设置
try {
                    var file = input[type='file'];
                    file.select();
                    file.blur();
                    var path = document.selection.createRange().text;
                    var fso = new ActiveXObject("Scripting.FileSystemObject");
                    // thisSize就是上传文件的大小
                    thisSize = fso.GetFile(path).size;
                } catch (e) {
                    alert(e + "\n" + "如果错误为:Error:Automation 服务器不能创建对象;" + "\n" + "请按以下方法配置浏览器:" + "\n" + "请打开【Internet选项-安全-Internet-自定义级别-ActiveX控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(不安全)-点击启用-确定】");
                    return window.location.reload();
                }
- 获取文件的类型
  ``` input[type='file'].value```可以获取到上传文件的路径,可以拿路径来截取文件名;当然如果file设置了multiple,value只能获取最后一个文件的路径;

你可能感兴趣的:(表单提交文件相关)