`

JavaScript 多文件上传

阅读更多

 

多文件上传时,首先要解决的一个问题就是动态去添加或删除文件选择框,原来以为没多么困难的,但是没想到IE居然不支持 table.appendChild()的js代码,导致整个前台JS的实现时间比原计划大大增加。不过还好可以借助网络查找需要的资源,最终成功实现兼 容IE和FF的文件选择框的动态添加及删除功能。
       先来看一下在FF中展现出来的效果,IE中效果亦然;这里要上传的是xls格式的 excel文件,在文件选择之后对文件后缀名进行校验,并且最上面的文件选择框不能删除;

 

<head>
<title>excel数据导入</title>
</head>
<script type="text/javascript">
    var __FILE_INDEX = 0;//文件标识
    var __LOADING_TIP_DIV=null;
    var __ICON_PATH="<%=request.getContextPath()%>/images/icons";
    /**
    * 对选择的文件进行格式校验,只能选择xls格式的文件
    */
	function checkFile(fileObj){
		var objSpan = document.getElementById("span_"+fileObj.id);
		if(!checkExcel(fileObj.value)){
			objSpan.innerHTML="<img title='错误' src='"+__ICON_PATH+"/check_error.png' border='0'></img><font style='color:red;font-size:12px'>只能导入xls格式文件!</font>"
			fileObj.errFlag = true;
	    } else {
	    	objSpan.innerHTML="<img title='正确' src='"+__ICON_PATH+"/check_right.png' border='0'></img>"
	    	fileObj.errFlag = false;
		}
		if(fileObj.value != "" && fileObj.noDelete!="true"){
			document.getElementById("del_"+fileObj.id).innerHTML="<span title='删除文件' onclick='deleteFile(\""+fileObj.id+"\")' style='font-size:12px;color: #4684b2;cursor:pointer;border-bottom:1px solid #4684b2'>删除</span>";
	    }
   }

	/**
	 * 删除选择的文件
	 */
	function deleteFile(fileId){
       var trNode = document.getElementById("tr_" + fileId);
       var trParent = trNode.parentNode;
       trParent.removeChild(trNode);
    }

    /**
     * excel校验函数
     */
   function checkExcel(filePath){
	   var subfix = filePath.substring(filePath.lastIndexOf(".")+1);
		  if(subfix!="xls"){
		    return false;
		  }
		  return true;
   }
	/**
	 * 文件上传时的校验逻辑
	 */
   function excelUpload(){
	   var fileCount = 0;
	   var files = document.getElementsByTagName("INPUT");
	   for(var i=0; i < files.length; i++){
		   if(files[i].type.toLowerCase!='file')continue;
          if(files[i].errFlag){
             alert("导入的文件只能是xls格式,请重新选择.");
             files[i].focus();
             return;
          }
          if(files[i].value!="")
          	fileCount++;
	  }
	  if(fileCount < 1){
         alert("请先选择要上传的数据文件!");
         return;
	  }
      document.getElementById("uploadExcelForm").submit();
  }
     /**
      * 添加文件
      */
     function addFile(){
    	   ++__FILE_INDEX;
           var fileId = "file"+__FILE_INDEX;
           var uploadTable = document.getElementById("tableUploadFile")
           var trElement = uploadTable.insertRow(-1);
           trElement.id="tr_"+fileId;
           var tdElement = trElement.insertCell(-1);
           tdElement.id="td_"+fileId;
           tdElement.innerHTML =  "<input type='file' id='"+fileId+"' size='30' style='padding-left:5px;width:300px;cursor:pointer;' onchange='checkFile(this)'>"
               +"<span id='span_" + fileId + "'></span>"
               +"<span id='del_" + fileId + "'></span>";
     }
</script>
<body>
<form id="uploadExcelForm" name="uploadExcelForm" method="post"
	target="_parent" enctype="multipart/form-data"
	action="<%=request.getContextPath()%>/excelUpload.action">
<table width="100%" id="tableUploadFile"  align="center" >
	<tr>
		<td>请选择要上传的Excel数据文件: <span title='添加文件' onclick='addFile()' style='font-size:12px;color: #6495ED;cursor:pointer;border-bottom:1px solid #6495ED'>添加文件</span></td>
	</tr>
	<tr id="tr_file0">
		<td><INPUT class="text" id="file0"
			style="padding-left:5px;width:300px; cursor: pointer" type="file" name="file0" size="30"
			onchange="checkFile(this);" noDelete="true"><span id="span_file0"></span></td>
	</tr>
</table>
 <div align="center" style="width: 100%"><input type="button" value=" 导入 "
			onclick="excelUpload();"></div>
</form>

</body>
</html>
 

 

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JavaScript多文件上传

    JavaScript多文件上传是一种常见的Web开发功能,允许用户一次性选择并上传多个文件到服务器。这个功能在现代网页应用中尤其重要,比如社交媒体平台、云存储服务和文件协作工具等。在这个场景下,JavaScript作为...

    javascript多文件上传 无刷新

    ### JavaScript多文件上传无刷新技术解析 #### 一、引言 在Web开发中,文件上传是一项常见的功能需求。随着用户对用户体验要求的不断提高,传统的表单提交方式已无法满足现代应用的需求。本文将深入探讨一种利用...

    javascript+HTML5 多文件上传(插件)多进度条显示

    在本项目中,"javascript+HTML5 多文件上传(插件)多进度条显示"是一个实现这一功能的实例,它允许用户选择并上传多个文件,并在上传过程中实时显示每个文件及整体的上传进度。下面将详细介绍这个技术实现的关键...

    zyUpload 多文件上传

    在JavaScript文件上传领域,zyUpload 的实现原理主要包括HTML5的File API、FormData对象以及Ajax异步请求。File API允许开发者在浏览器端直接访问和操作用户选择的文件,而FormData对象则用于封装这些文件,以便通过...

    javascript多附件上传

    JavaScript多附件上传是一种常见的Web开发功能,用于在网页上实现用户选择并上传多个文件。这一技术主要基于HTML5中的File API,它允许开发者在浏览器端处理文件,包括读取、写入和上传。本文将详细讲解JavaScript...

    开源的多文件上传采用JavaScript插件

    标题中的“开源的多文件上传采用JavaScript插件”指的是使用JavaScript技术实现的一种允许用户上传多个文件的开源解决方案。这种插件通常会利用浏览器的Flash插件或其他类似技术,如HTML5的File API,来实现文件选择...

    多文件上传封装好的javascript文件类

    "多文件上传封装好的javascript文件类" 提供了解决这个问题的一种方法。这个JS类是专门为实现批量文件上传而设计的,简化了前端与服务器之间的交互流程。在深入探讨这个类之前,我们需要先理解一些基本概念。 **...

    在html页面使用JavaScript实行文件上传到本地服务器并获取文件所在路径

    使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...

    用javascript做的一个多文件上传

    以上就是关于“用JavaScript做的一个多文件上传”这一项目的关键知识点。尽管开发者自谦地称其“有点垃圾”,但实现这样的功能已经涉及到Web开发的重要技术,并且对于初学者来说,这是一个很好的实践项目,能够深入...

    java多文件上传实现

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...

    JavaScript上传多个文件

    在JavaScript中实现多文件上传是一项常见的前端开发任务,尤其在现代网页应用中,用户往往需要一次性上传多个图片、文档或其他类型的文件。这个标题为“JavaScript上传多个文件”的资源,显然提供了一个简洁而实用的...

    防网易js多文件上传例子(附源码)

    本示例是关于如何使用JavaScript实现一个防网易的多文件上传功能,这涉及到前端技术、浏览器兼容性、文件处理策略等多个知识点。 首先,"防网易"通常指的是防止用户绕过限制,如防止批量上传、防止上传大文件等。在...

    C# .NET FileUpload 多文件上传例子

    对于初学者来说,理解并实现多文件上传是一项重要的技能,它可以帮助你构建交互性强、功能完善的Web应用程序。在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键...

    ASP Javascript 文件上传

    在提供的压缩包`uploaddemo`中,可能包含了上述原理的一个实际演示,你可以解压后查看源代码,进一步学习和理解ASP JavaScript文件上传的实现。这个例子将帮助你更好地理解客户端和服务器端如何协同工作,完成文件...

    SpringMVC文件上传,多文件上传实例

    为了提升用户体验,可以添加文件上传进度条,利用JavaScript监听上传进度并更新界面。这需要前端和后端的配合,通常通过Ajax异步请求实现。 通过上述步骤,我们可以构建一个完整的SpringMVC文件上传系统,不仅支持...

    前端Javascript+Html5+后端PHP分块上传文件

    前端Javascript+Html5+后端PHP分块上传文件,PHP分块上传大文件,该项目可以正常运行,入口为index.html,需要正确配置fileDir的读写权限 目前有测试过上传1.5G左右的没有问题(未测试更大的文件),理论上更大的...

    Vuejs文件上传组件多文件上传

    本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 首先,文件上传组件通常需要处理以下几个关键点: 1. **多文件选择**:用户可能...

    Javascript使用SWFUpload进行多文件上传

    SWFUpload是一个功能强大的JavaScript文件上传控件,它提供了许多传统HTML上传方式所不具有的特性。主要优势包括: 1. 可以同时选择多个文件进行上传。 2. 上传过程中无需刷新页面。 3. 显示上传进度条,使用户可以...

    多文件上传,并显示每一个的进度

    在现代Web应用中,用户可能需要一次性上传多个文件,例如图片、文档或视频。这个过程如果能实时显示每个文件的上传进度,将极大地提升用户体验。本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,...

Global site tag (gtag.js) - Google Analytics