`
baobeituping
  • 浏览: 1070510 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

根据你所选择的文件个数,实现多文件上传

阅读更多

1.jsp页面

思路:根据你所选择的下拉框中的个数,显示多个文件上传列表。

<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>

<html>
 <head>
  <title>客户文档管理</title>
  <meta http-equiv="Content-Type" content="text/html;charset=gbk">
 </head>

 <body>
  <br />
  <form action="" method="post" enctype="multipart/form-data" name="thisForm">

   <input type="hidden" name="ID">

   <table border='0' cellpadding='4' align="center" cellspacing='1'
    id="table1" class="table" width="550">

    <tr>
     <td nowrap class='tdrighttextred'>
      文档上传:
     </td>
     <td class='td' colspan="3">
      <select name="fileNum" size="1" onchange="addFile(this.value)">
       <option value="0">
        请选择文档个数
       </option>
       <c:forEach begin="1" end="50" var="i" step="1">
        <option value="${i}">
         ${i}
        </option>
       </c:forEach>
      </select>

      <c:forEach begin="1" end="50" var="i" step="1">

       <div style="width:100px"><input type="file" name="referenceFormFile[${i-1}]"/></div>

      </c:forEach>
      <input type='button' class="tbbutton" value='重选' id="filebutton"
       onclick='ResetFile()'>
     </td>
    </tr>
    <tr class="trcenter">
            <td height="25" colspan='4' nowrap>
    <input name="savebutton" id="savebutton" type="button" class="tbbutton" value="保  存" onclick="SubmitButton(this,'add');">
    
    <input name="closebutton" id="closebutton" type="button" class="tbbutton" value="关  闭"  onclick="WinClose();">
   </td>
        </tr>
   </table>
  </form>
 </body>
</html>
<script language="javascript" type="text/javascript">
 
 initPage();

 function initPage()
 {
  <!--初始的时候,首先将“重置,和文件选择列表隐藏,文件列表默认为50个”-->
  document.getElementById('filebutton').style.display='none';
  for(var i=0;i<=49;i++)
  {
   document.getElementById("referenceFormFile["+i+"]").style.display="none";
  }
 }
 
 function addFile(n)
 {
  <!--当选择了文件个数后,隐藏文件选择框,出现上传文件列表-->
  document.thisForm.fileNum.style.display='none';
  document.getElementById("filebutton").style.display='';
  if(n>0&&n<=50){
   for(var i=0;i<n;i++){
    document.getElementsByName("referenceFormFile["+i+"]")[0].style.display='';
    //document.getElementById("referenceFormFileSpan["+i+"]").style.display='';
   }
  }else{
   document.thisForm.fileNum.style.display='';
  }
 }
 function ResetFile()
 {
  document.thisForm.fileNum.style.display='';
  document.getElementById("filebutton").style.display='none';
  document.thisForm.fileNum.options[0].selected=true;
  for(var i=0;i<=49;i++){
   document.getElementsByName("referenceFormFile["+i+"]")[0].style.display='none';
   //document.getElementById("referenceFormFileSpan["+i+"]").style.display='none';
  }
 }
 function SubmitButton(obj,SubmitFlag)
 {
  if(SubmitFlag=="add"){
    document.thisForm.action="/BossPractice/CusFileAction.do";
    document.thisForm.submit();
  }
 }

</script>
2.上传的JAVA文件

package com.bossfile;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class CusFileAction extends Action {

 public ActionForward execute(ActionMapping map, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  // 定义局部变量
  String ID = "", submitButtonFlag = "", procMsg = "", fileExt = "";
  int PhotosCount = 0;

  CusFileForm actionform = (CusFileForm) form;
  try {
   FormFile formFile[] = actionform.getReferenceFormFile();
   String path = "d://upload";

   File file = new File(path);
   file.mkdirs();
   for (int i = 0; i < Integer.parseInt(actionform.getFileNum()); i++) {
    if (formFile[i].getFileSize() != 0) { // 判断是否为空
     fileExt = formFile[i].getFileName().substring(
       formFile[i].getFileName().lastIndexOf("."),
       formFile[i].getFileName().length()).toLowerCase();
     PhotosCount += 1;
     String filename = actionform.getId() + "-" + PhotosCount
       + fileExt;
     uploadFile(path, formFile[i], filename);
    }
   }

  } catch (Exception e) {
   procMsg = e.getMessage();
   System.out.print(e.getMessage());
   e.printStackTrace();
  } finally {

  }
  return null;
 }
 /**
  * 文件上传功能
  */
 public void uploadFile(String path, FormFile myFile, String fileName) {
  try {

   byte[] fileData = myFile.getFileData();
   FileOutputStream fos = new FileOutputStream(new File(path
     + fileName));
   fos.write(fileData);
   fos.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

分享到:
评论

相关推荐

    java多文件上传实现

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

    JSP同时选择多文件上传MultifileUploadDemo

    在多文件上传场景下,Flash允许用户一次性选择多个文件,提供了一种友好的用户体验。Flash上传工具通常通过ActionScript(Flash的编程语言)编写,它可以控制文件的选取、上传过程,并且可以显示上传进度,提升用户...

    flash 实现的多文件上传

    综上所述,Flash实现的多文件上传涉及了前端Flash技术与后端服务器交互的多个层面,包括文件选择、队列管理、上传进度监控以及服务器端的文件处理。尽管Flash已经过时,但了解这种技术可以帮助我们更好地理解早期Web...

    c# 使用WebRequest实现多文件上传.docx

    "C# 使用 WebRequest 实现多文件上传" C# 使用 WebRequest 实现多文件上传是.NET Framework 中的一种常见的网络编程技术。通过使用 WebRequest 类...在实际应用中,我们可以根据需要选择合适的方法来实现多文件上传。

    使用layui实现多文件列表上传

    在“使用layui实现多文件列表上传”这个项目中,主要涉及到了layui的文件上传功能,这在网页应用中是非常常见且实用的功能,尤其对于需要用户提交多份文件的场景。 首先,layui的文件上传组件是基于HTML5的File API...

    Ext3.0实现多文件上传.rar

    综上所述,“Ext3.0实现多文件上传.rar”这个压缩包中的代码示例可能涵盖了以上技术点,提供了一个完整的多文件上传解决方案,包括前端的交互设计和后台的文件处理逻辑。通过学习和理解这个示例,开发者可以更好地...

    web页面多选上传文件的实现(浏览器-打开文件-可选多个文件来上传).源代码

    传统的文件上传方式通常只允许用户选择一个文件,但随着技术的发展,现在我们可以实现多选文件上传功能,让用户能够一次性上传多个文件,极大地提高了用户体验。本教程将探讨如何在网页中实现多选文件上传,基于提供...

    flex实现多文件上传

    综上所述,使用Flex实现多文件上传涉及了文件选择、HTTP请求、进度监控等多个环节。通过合理地组织代码和优化用户体验,我们可以创建一个功能完备且用户友好的多文件上传功能。在实际开发中,可能还需要根据具体需求...

    struts2实现多文件上传下载

    1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有...

    .net MVC 实现多文件上传,显示上传进度条,可传多个文件

    在.NET MVC框架中,实现多文件上传并展示上传进度条是一项常见的需求,这不仅可以提高用户体验,还能让用户了解文件上传的状态。下面将详细讲解如何通过WebUploader插件来实现这一功能。 1. **WebUploader简介** ...

    uniapp +上传文件+安卓、ios文件选择

    总之,在uniapp中实现文件上传功能涉及了文件选择、文件类型处理和Base64编码转换等多个环节。理解并熟练掌握这些知识点对于开发跨平台应用至关重要,特别是对于需要处理多种文件格式的应用来说。在实际开发过程中,...

    qt 自定义实现文件选择框

    本篇文章将详细讲解如何在Qt中自定义实现一个文件选择框,并修改其样式以保持与桌面应用的整体设计一致。 首先,我们需要了解Qt中的QFileDialog类,它是用于打开和保存文件的标准对话框。然而,QFileDialog的默认...

    一次选择多个文件实现上传功能

    "一次选择多个文件实现上传功能"是一个常见的需求,它提高了用户体验,减少了用户操作步骤。在本篇中,我们将深入探讨如何通过Uploadify和Struts2框架来实现这一功能。 首先,Uploadify是一个基于JavaScript和Flash...

    uploadify支持一次选择多个文件且批量上传

    "uploadify"是一款基于jQuery的插件,它为网页提供了强大的文件上传功能,包括一次选择多个文件和批量上传的能力。这些特性极大地提高了用户上传文件的效率,减轻了他们的操作负担。 "uploadify"的多选功能允许用户...

    java图形化实现文件上传

    利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...

    WCF 实现 文件分段上传、支持多个文件一起处理、Log4Net日志记录

    在客户端,可以并行发起多个文件上传请求,利用多线程或多任务技术,如Task Parallel Library(TPL),来同时处理多个文件。 4. **Log4Net 日志记录**: Log4Net是Apache的一个开源项目,提供了一套强大的日志记录...

    Android文件上传,文件选择器,多选

    综上所述,实现Android的文件上传和多选、单选文件功能涉及到了文件选择器的定制、文件操作、网络通信等多个方面。通过合理的设计和优化,可以提供高效、安全的文件操作体验。在实际开发中,要不断迭代和优化,确保...

    多文件上传和展示

    Bootstrap-fileinput 是一个流行的、功能丰富的jQuery插件,专门用于实现美观且实用的文件上传功能,特别是对于多文件上传和预览。本教程将深入探讨如何使用Bootstrap-fileinput来实现这一功能。 【描述】:...

    php实现多文件上传

    首先,确保`enctype="multipart/form-data"`已经设置,这是处理文件上传所必需的。 1. 检查是否有多文件上传: ```php if(isset($_FILES['uploads']) && count($_FILES['uploads']['name']) &gt; 0) { // 多文件...

    SWFUpload实现多文件上传

    SWFUpload是一个开源的JavaScript库,它允许网页在Flash的支持下实现高级的文件上传功能,包括多文件选择、进度条显示、预览等。在Web开发中,尤其是在处理大量图片或者文档上传时,SWFUpload提供了高效且用户体验...

Global site tag (gtag.js) - Google Analytics