几年前做兼容IE8的pc端项目的时候就遇到文件上传的需求,当时也是查看文档来解决IE9以下不支持formData的问题。由于之前没有写博客的习惯,最近又遇到这样的需求,所以写出来想帮助需要用到的朋友。
本身文件上传不难,只需要注意一些细节:
- 用最初的表单提交的方式form.submit()
- <input type='file'> onchange问题
- 点击<input type='file'>问题
- 提交表单后跳转问题
一,用最初的表单提交的方式form.submit()
在IE9中不支持formData对象,无法使用ajax上传文件,所以通过在一个form表单中直接提交到服务器上传。
<form>
<input type="file">
</form>
<button onclick="submit()">上传</button>
<script>
function submit() {
var form = document.forms[0]
form.submit()
}
</script>
注意:如果要获取file的内容,主流浏览器可以通过获取input对象e.files[0]拿到,在IE9以下由于安全策略的因素不支持直接获取,但是可以通过微软在IE浏览器下支持的ActiveXObject对本地文件进行操作(有关ActiveXObject对象的了解可以