兼容IE8的注意点:

  1. 原生多文件属性multiple只在IE10/11上有效,IE8不兼容无法使用
  2. formdata对象同样只支持在IE10/11,IE8无法使用
  3. 很多API在IE8上无法使用,同样是兼容的难点
  4. IE8的安全机制,使一些操作无法实现

本文使用原生JS对文件进行简单处理实现多文件上传,未使用其他插件。

实现思路:

由于multiple属性无法使用,采取通过增加input框的方式实现多文件的选择和存储,故单次只能选择一个文件,可选择多次。

选择完一个文件之后,调用方法隐藏input,并将文件名以列表形式显示出来,并提供删除选项。

效果图:

实现代码:

<!DOCTYPE html>
<html><head><title>多文件上传</title><meta charset="utf-8"><style>.file-select{position: relative;}/*设置透明*/.file-select input[type=file]{position: absolute;width: 50px;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);-ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);opacity: 0;-webkit-opacity: 0;-moz-opacity: 0;z-index: 100;}.brower{display: inline-block;width: 50px;position: absolute;left: 0px;color: skyblue;}.file-select input:hover + span.brower{text-decoration: underline;}</style>
</head><body><form action="hello.do" method="post" enctype="multipart/form-data"><div id="eee"><span>选择文件:</span><input type="submit"  value="提交" /><br /><div class="file-select" id="file_div1"><input type="file" name="UploadFile" onchange="fileChange()" /><span class="brower">浏览</span><input type="button" onclick="deleteDiv()" style="display: none;" value="删除" /></div></div></form><script>var FILECOUNT = 1;function fileChange() {var preDiv = document.getElementById("file_div" + FILECOUNT);var nextDiv = preDiv.cloneNode(true);FILECOUNT = FILECOUNT + 1;// 添加新的divnextDiv.setAttribute("id", "file_div" + FILECOUNT)document.getElementById("eee").appendChild(nextDiv);// 对已选完文件的div进行处理var preFile = preDiv.children[0],preSpan = preDiv.children[1],preButton = preDiv.children[2];preFile.style["display"] = "none";preSpan.className = "";preSpan.innerHTML = preFile.value;preButton.style["display"] = "inline-block";}// 删除方法function deleteDiv(event) {var ev = event || window.event;var target = ev.target || ev.srcElement;document.getElementById("eee").removeChild(target.parentNode);}</script>
</body></html>

持续更新:github地址

兼容IE8的多文件上传实现相关推荐

  1. nodejs文件服务器断点续传,基于Nodejs的大文件上传之断点续传

    接着<扒一扒Nodejs formidable的onPart>和<也说文件上传之兼容IE789的进度条---丢掉flash>:前面已完成兼容IE789的大文件上传:无flash ...

  2. python flask上传文件_flask 文件上传(单文件上传、多文件上传)--

    文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...

  3. formData文件上传兼容IE8

    场景:XP环境IE8版本的浏览器,在iframe内文件上传 问题: 1.使用webupload 在ie8下模拟点击打开文件选择器,按钮点击无反应. 查阅资料后,得知原因是webupload在ie8下使 ...

  4. 兼容IE低版本的文件上传解决方案

    兼容IE低版本的文件上传解决方案 参考文章: (1)兼容IE低版本的文件上传解决方案 (2)https://www.cnblogs.com/zhou195/p/9253895.html 备忘一下.

  5. php curl post 文件_php curl文件上传$_FILES为空,只有$_POST有值,如何兼容php5.0~5.6各版本...

    PHP 5.5以下用@,php5.5 @已被弃用,但勉强还能用,php5.6直接删除了@用法,必须得用new CURLFile(realpath('image.png'))这种方式才行了.关键我这还没 ...

  6. 兼容IE9的文件上传

    前提:做兼容ie9的文件上传需要后台共同配合,靠前端自己的力量是不行的 做文件上传, 我几乎把网上能找的文章都看了, 但是在我这 就是行不通, 欸, 就是玩儿, 搞得我很火大, 还好实现了, 下面说说 ...

  7. 文件上传事件兼容性解决方案:兼容ie和谷歌

    在使用vue的做文件上传的时候,发现IE11兼容性有问题,无法打开文件选择器.现解决方案如下 var event; console.log("typeof (Event)========== ...

  8. uploadify多文件上传插件

    这个插件是兼容IE8及以上版本的,实现了基本功能,底部有下载连接 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...

  9. Java关于文件上传的一个例子

    文件上传不能用get方式提交,因为他提交的数据量最多只有1kb, IE浏览器默认情况下把file对象当做普通的文本框.并没有当做文件上传来处理. 普通文的表单name =value的形式提交数据. 文 ...

  10. 简便无刷新文件上传系统

    兼容:ie6/7/8, firefox 3.5.5, opera 10.01, safari 4.0.3, chrome 3.0 效果预览 文件上传 选择文件 重命名 操作 状态    重置 选择文件 ...

最新文章

  1. winhttp get 实例_实例|CASS的绘制的航道断面,怎么多了两个边沟? 135
  2. 概率机器人总结——占用栅格地图先实践再推导
  3. T.38 and the future
  4. Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)
  5. 使用Tab Bar切换视图
  6. mybatis一个方法执行多条sql_精尽MyBatis源码分析——SQL执行过程之Executor!
  7. linux shell do done,bash千万不要这样cmd | while read X Y Z; do ... done使用
  8. laravel nginx配置_nginx高可用
  9. 拓端tecdat|R语言基于线性回归的资本资产定价模型(CAPM)
  10. 数据结构Java第四版pdf_数据结构与抽象:Java语言描述(原书第4版) 中文pdf完整版[131MB]...
  11. 如何完美的卸载Office2007?
  12. JVM 内存分配策略
  13. php 模拟登陆微云,微云 - HHTjim'S 部落格
  14. 01读书笔记:《编码》-隐匿在计算机软硬件背后的语言(01-11章)
  15. 道德经 道可道,非常道。
  16. FSOS森林模拟优化模型学习笔记
  17. 微信小程序--获取当前时间
  18. Python爬取《冰雪奇缘2》豆瓣影评
  19. awk 匹配_详解Linux三剑客之awk
  20. 联发科有没有高端处理器_联发科官宣,全球第六款7nm处理器来袭,专为游戏而生...

热门文章

  1. 纸张大小、规格、度量详解
  2. Ubuntu各类软件推荐
  3. tan和cot的梗_“sin对cos说 我们今晚是tan呢?还是cot呢?”啥意思
  4. 远程服务器键盘变成快捷键?
  5. 论文查重系统如何才安全?
  6. edge里bing必应搜索不了解决办法
  7. 深入理解什么是端口(port)
  8. C++11多线程 内存序(std::memory_order_relaxed)
  9. html网页div是什么意思,HTML网页中div是什么意思?
  10. Excel表格限制编辑,什么原因?