java多附件上传 实例demo

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="">

    <script type="text/javascript" src="../js/swfupload/js/swfupload.js"></script>
    <script type="text/javascript" src="../js/swfupload/js/swfupload.queue.js"></script>
    <script type="text/javascript" src="../js/swfupload/js/fileprogress.js"></script>
    <script type="text/javascript" src="../js/swfupload/js/handlers.js"></script>

    <style type="text/css">
        a{
            color:blue;
            text-decoration: underline;
            font-size: 13px;
        }
    </style>
    <script type="text/javascript">
  var upload;
  window.onload = function() {
    upload = new SWFUpload({
    // 处理文件上传的url
    upload_url: "${pageContext.request.contextPath}/fileAction!uploadBatch.do",
    postName : "Filedata",//上传的file

    // 上传文件限制设置
    file_size_limit : "5MB",//指定要上传的文件的最大体积,可以带单位,合法的单位有:B、KB、MB、GB,默认为KB
    file_types : "*.jpg;*.jpeg;*.png;*.gif;*.bmp;",    //此处也可以修改成你想限制的类型,比如:*.doc;*.wpd;*.pdf
    file_types_description : "Word,Excel,Images Files",
    file_upload_limit : "200",//允许同时上传文件的个数
    file_queue_limit : "0",//允许队列存在的文件数量,默认值为0,即不限制

    // 事件处理设置(所有的自定义处理方法都在handler.js文件里)
    file_dialog_start_handler : fileDialogStart,
    file_queued_handler : fileQueued,
    file_queue_error_handler : fileQueueError,
    file_dialog_complete_handler : fileDialogComplete,//这里为自动上传
    upload_start_handler : uploadStart,
    upload_progress_handler : uploadProgress,
    upload_error_handler : uploadError,
    upload_success_handler : uploadSuccess,
    upload_complete_handler : uploadComplete,

    // 按钮设置
    button_image_url : "../js/swfupload/images/XPButtonNoText_61x22.png",    // 按钮图标
    button_placeholder_id : "spanButtonPlaceholder",
    button_width: 61,
    button_height: 22,
    button_text: ‘&nbsp;&nbsp;浏览...‘,

    // swf设置
    flash_url : "../js/swfupload/js/swfupload.swf",

    custom_settings : {
        progressTarget : "fsUploadProgress",
        cancelButtonId : "btnCancel"
    },

        removeCompleted : true,//上传完成后自动删除队列
        use_query_string : true,//要传递参数,必须配置
        //debug模式,可以在页面看到详细信息
        debug: false
    });
  };

  //重写上传成功方法
  function uploadSuccess(file, serverData) {
        try {
            var progress = new FileProgress(file, this.customSettings.progressTarget);

            var showMsg = "<span style=‘margin-left:100px‘></span><font color=‘green‘>---------------上传成功,</font><a style=‘text-decoration: underline;color:blue;‘ target=‘_blank‘ href=‘<%=request.getAttribute("loanDownloadPath")%>" + serverData.split(":")[1] + "‘>预 览</a>       <img title=‘删除‘ onclick=‘removeFile4Add(this,\""+ serverData.split(":")[1] +"\",\""+serverData.split(":")[0]+"\")‘ style=‘cursor: pointer;‘ src=‘../images/list_remove.png‘ />";
            progress.setStatus(showMsg);
            progress.toggleCancel(false);

            var fileObj = document.getElementById("filesLongString");
            fileObj.value = fileObj.value + serverData + "/";

            //alert(fileObj.value.length);

        } catch (ex) {
            this.debug(ex);
        }
    }

  //上传成功后的删除
  function removeFile4Add(fileIdObj,newName,oldName) {
      $.messager.confirm("删除","确认删除该附件?",function(r){//jquery easyui 提示框
            if(r) {
                  $(fileIdObj).parent().parent().parent().hide();//隐藏本行

                  //转义括号和/
                  var replaceStr = oldName + ":" + newName + "\/";

                  replaceStr = replaceStr.replace(/\(/,"\\\(");
                  replaceStr = replaceStr.replace(/\)/,"\\\)");
                  replaceStr = replaceStr.replace(/\(/,"\\\(");
                  replaceStr = replaceStr.replace(/\)/,"\\\)");

                  var reg2 = new RegExp(replaceStr,‘ig‘);

                  var fileObj = document.getElementById("filesLongString");
                  var result = fileObj.value.replace(eval(reg2),"");
                  document.getElementById("filesLongString").value = result;
            }
        });
  }

  </script>
  </head>

  <body>
      <%          /*循环上传后的附件并显示*/
          String files_oldname = (String)request.getAttribute("bean.files_oldname");
          String files_newname = (String)request.getAttribute("bean.files_newname");
          String loanDownloadPath = (String)request.getAttribute("downloadPath");

          String oldNameArr[] = null, newNameArr[] = null;
          if(files_oldname!=null && files_newname!=null) {
              oldNameArr = files_oldname.split("/");
              newNameArr = files_newname.split("/");
          }
          String filesLongString = "";//组装成新增借款时附件的格式//中文名.jpg:201506231401577954808.jpg/
          Map<String,String> fileMap = new TreeMap<String,String>();//有序
          if(oldNameArr!=null && newNameArr!=null) {
              for(int i=0; i<oldNameArr.length; i++) {
                  fileMap.put(oldNameArr[i], newNameArr[i]);
                  filesLongString = filesLongString + oldNameArr[i] + ":" + newNameArr[i] + "/";
              }

          }
      %>

          <%
          int i = 0;
          for(Map.Entry<String, String> entry : fileMap.entrySet()) {
              i++;
          %>
              <div id="fileId<%=i%>" style="padding-top:15px">
                  <a target="_blank" href="<%=loanDownloadPath%><%=entry.getValue()%>"><%=entry.getKey() %></a>

                  <s:if test="#session.s_userRole==1">
                      <%
                          if(entry!=null && !"".equals(entry.getValue()))
                          {
                      %>
                      <img title="删除" style="cursor: pointer;" src="../images/remove.png" onclick="removeFile(‘fileId<%=i%>‘,‘<%=entry.getValue()%>‘,‘<%=entry.getKey() %>‘)">
                      <%
                          }
                      %>
                  </s:if>
              </div>
          <%
          }
          if(fileMap.size()==0) {
              //out.print("没有上传附件");
         }
          %>

    <table>
            <tr>
                <td colspan="4" class="sm">
                    <form id="filesForm" name="filesForm" method="post" action="" enctype="multipart/form-data">
                        <s:token />
                        <div class="flash" id="fsUploadProgress"></div>
                        <br/>
                        <div style="padding-left: 5px;">
                              <font color="blue">请选择需要上传的附件:</font><span id="spanButtonPlaceholder"></span>

                              <!-- 不能去掉‘取消‘按钮,否则无法上传 -->
                              <input id="btnCancel" type="button" value="取消" onclick="cancelQueue(upload);" disabled="disabled"
                                  style="display:none;margin-left: 2px; height: 22px; font-size: 8pt;" />

                              <input id="clearDivId" type="button" value="清空" onclick="clear();" style="display:none"/>
                              <br/>
                              (提示:选择文件后会自动上传。)
                          </div>

                          <input type="text" style="width: 500px; visibility: hidden;" id="filesLongString" name="filesLongString" value="<%=filesLongString%>">
                    </form>
                </td>
            </tr>
        </table>

  </body>
</html>
//上传的文件到服务器
public void uploadBatch() {
        MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) ServletActionContext.getRequest();
        File[] files = wrapper.getFiles("Filedata");
        File savefile = null;
            String realpath = ServletActionContext.getServletContext().getRealPath("/upload/");//上传路径
            int randomNum = (int) (Math.random() * 10000);// 生成一个10000以内的随机数
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String fileNameStr = wrapper.getFileNames("Filedata")[0];//原名称
            String type = fileNameStr.substring(fileNameStr.lastIndexOf("."), fileNameStr.length());// 获取文件类型
            String newFileName = sdf.format(new Date()) + randomNum + type;// 当前时间作为上传后的文件名
            savefile = new File(new File(realpath), newFileName);
            savefile.setWritable(true, false);//设置可写,针对linux系统
            if (!savefile.getParentFile().exists()) {
                savefile.getParentFile().mkdirs();
            }

            try {
                FileUtils.copyFile(files[0], savefile);
            } catch (Exception e) {
                logger.error("上传excel异常:", e);
            }

        try {
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/html; charset=UTF-8");
            response.setContentType("application/json;charset=UTF-8");
            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            PrintWriter writer = response.getWriter();
            writer.print(fileNameStr + ":" + newFileName);//数据导入成功后,返回文件原名、现名到前台
            writer.flush();
            writer.close();
        } catch (IOException e) {
            logger.error(e);
        }

    }
时间: 2024-11-06 07:23:04

java多附件上传 实例demo的相关文章

Java中附件上传

1.因为上传文件会使用到MultipartHttpServletRequest对象,我们需要在Springmvc配置文件中配置一个解析器 <!--为了使用到spring为我们提供的,MultipartHttpServletRequest对象,我们需要配置一个解析器 --> <!-- 而且对于Bean组件要想正常运行,必须配置一个id属性 --> <bean id="multipartResolver" class="org.springframe

jquery webcam + java服务拍照上传实例

前端关键代码: //自定义样式 <style type="text/css">     #webcam { border: 1px solid #666666; width: 320px; height: 240px; }     #photos { border: 1px solid #666666; width: 320px; height: 240px; }     .btn { width: 320px; height: auto; margin: 5px 0px;

使用plupload做一个类似qq邮箱附件上传的效果

公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可以添加多个附件,也可一个都不添加 以其中一个为例:(文件保存到了数据库中),有关plupload的内容可参考:http://www.360doc.com/content/14/0714/03/552866_394228686.shtml 首先是po package cn.com.plupload.p

asp.net结合uploadify实现多附件上传

1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的地方还请大家多多交流沟通,下面把代码贴出来大家一起交流. 2.组成 首先说明一下代码实现所用到的技术,仅供参考: 开发工具:vs2010 目标框架:.NET Framework3.5 Uploadify:uploadify-v3.1 Jquery:jquery-1.8.1.js 最后我会将整个Dem

基础资料功能开发(附件上传、查看,获取当前用户信息、时间)

1.数据库建表.SYS_MODULE挂菜单.给菜单添加权限 2.创建Action.Dao.model.service... 3.struts-aqxx.xml配置 <action name="zlaqJczl/*" method="{1}" class="com.tech15.aqxx.action.ZlaqJczlAction"> <result name="*" type="direct&quo

SpringMVC多文件上传实例

后台Conroller import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Date;

java使用httpcomponents 上传文件

一.httpcomponents简介 httpcomponents 是apache下的用来负责创建和维护一个工具集的低水平Java组件集中在HTTP和相关协议的工程.我们可以用它在代码中直接发送http请求,而无需用到页面的js去完成.该项目由一下几个部分组成: 1.HttpComponents Core: HttpCore 是一套的低级别的 HTTP 传输组件可用于构建自定义客户端和服务器端 HTTP 服务与一个最小的足迹.HttpCore 支持两种模型: 阻止基于经典 Java I/O 和非

Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)

相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/article/details/8764165 注意事项: 1.生成WSDL文件时,D7可能有的无法生成,用XE版本可以全部生成. 返回字节流: 1 function GetByte(AString: string): TByteDynArray; 2 var 3 sByte: TByteDynArray;

java实现文件上传和下载

写在前面 [文件上传和下载]是很多系统必备功能, 比如PM\OA\ERP等:系统中常见的开发模式有B/S和C/S,而前者主要是通过浏览器来访问web服务器,一般采用七层协议中的[应用层http]进行数据传输,后者主要通过编程语言开发的app作为客户端来访问服务端,一般采用七层协议中的[传输层tcp]进行数据传输. 文章主要完成简单java web涉及的文件上传和下载功能. 正文 1. java原生servlet实现: pom.xml配置: <dependency> <groupId>