指引网

当前位置: 主页 > 网页制作 > WEB开发 >

动态设置上传文件enctype类型

来源:网络 作者:佚名 点击: 时间:2017-07-19 00:31
[摘要] 动态设置上传文件enctype类型 以下是最常见上传文件片段 form id=upform name=upform action=upload.php method=post enctype=multipart/form-data input type=file name=uploadfile[] / input type=file name=uploadfile[] / button type=submit

动态设置上传文件enctype类型以下是最常见上传文件片段 
<form id="upform" name="upform" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile[]" />
<input type="file" name="uploadfile[]" />
<button type="submit" >upload</button>
</form>
有点js知识得人可能试图用js检查并控制enctype得类型
 


form=document.getElementById('upform');
if(form.getAttribute('enctype')!='multipart/form-data'){
    form.setAttribute('enctype','multipart/form-data');
}
以上代码完全按照W3C格式
FF下运行良好 但是IE不兼容,其它浏览器可以不兼容,就IE不能不兼容
在看YUI类库时得到启发
IE中form没有enctype属性,只有encoding属性,那么以上代码改写为
 


form=document.getElementById('upform');
if(form.getAttribute('enctype')!='multipart/form-data'&&form.encoding!='multipart/form-data')
  if(form.encoding){
      form.setAttribute('encoding','multipart/form-data');
  }else{
      form.setAttribute('enctype','multipart/form-data');
  }
}
//最外成if判断可以去掉 因为你是要设置它可以上传文件
这样你可以试试这样得代码了
 


<script type="text/javascript">
function upload(form){
  if(form.encoding){
      form.setAttribute('encoding','multipart/form-data');
  }else{
      form.setAttribute('enctype','multipart/form-data');
  }
  form.setAttribute('method',post');
  if(!form.getAttribue('action')){
      form.setAttribute('action',location.href);
  }
  form.submit();
}
</script>
<form action="upload.php" onsubmit="try{upload(this);}catch(e){};return false;">
<input type="file" name="uploadfile[]" />
<input type="file" name="uploadfile[]" />
<button type="submit" >upload</button>
</form>

------分隔线----------------------------