好久没有写东西,最近在做个项目,要用到文件h 传的,以前虽然也做上传,但是总觉得不好用 ,现在和队友合作做了一个带进度条的上传,觉得还行~~和大家分享一下。
 
首先说一下大概是这样实现的,在我们平时的上传表单里面,除了文件上传之外,也许还有其他的信息需要填写的,这样问题就来了:点击上传按钮之后,这个表单都封装并提交上去了,在上传完成后整个页面就跳转了。而且也不利于我们验证用户输入。很多人这样做的,把这2个操作分开,当然这样也行。。。
 我们这样做:一个普通页面(可以用于填写所有信息的),一个文件上传页面,一个上传成功页面(这个不怎么重要)
然后关键的就是:把文件上传的页面嵌入到普通页面里面去,相当于说文件上传实际是由上传页面独立完成,信息填写页面也独立成功信息填写,这里我们用iframe。
 
 
不多说,上代码:
 
 
 1、处理上传的Action
 
 
 2、上传表单页面(就是我们平时普通的表单页面,样式有点乱。不理它了。嘻嘻~~~)
 
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
- <%  
- String path = request.getContextPath();  
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
- %>  
-   
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
- <html>  
-   <head>  
-     <base href="<%=basePath%>">   
-     <title>My JSP ‘index.jsp‘ starting page</title>   
-   </head>   
-   <body>   
-       
- <form action="upload_doCreate.action"  method="post" name="form" >    
-     <table id="table2" width="99%" border="0" cellpadding="0" cellspacing="0">  
-       <tr>  
-         <th>文件上传</th>  
-       </tr>  
-       <tr>  
-         <td ><table border="0" cellpadding="0" cellspacing="0" style="width:100%">  
-             <tr>  
-               <td align="left"> </td>  
-             </tr>  
-             <tr>  
-               <td width="100%">   
-               <table border="0" cellpadding="2" cellspacing="1" style="width:100%">   
-                   <tr>  
-                     <td align="right">文件名:</td>  
-                     <td><input type="text" id="filename" value=""/></td>  
-                   </tr>  
-                   <tr>  
-                     <td align="right">文件路径:</td>  
-                     <td><iframe style="width: 400px;height: 25px" scrolling=‘no‘ frameborder=‘0‘ resizable=‘no‘ allowtransparency=‘true‘ cellspacing=‘0‘ border=‘0‘ src=‘fileupload.jsp‘ id=‘iframeupload‘></iframe></td>  
-                   </tr>  
-                 </table>  
-                 <br />  
-                 </td>  
-             </tr>  
-           </table></td>  
-       </tr>  
-       <tr>  
-         <td colspan="2" align="center" height="50px">   
-           <input type="Submit" name="Submit" value="保存" class="button" />  
-           <input type="button" name="Submit2" value="返回" class="button" onclick="window.history.go(-1);"/></td>  
-       </tr>  
-     </table>   
- </form>  
-   </body>  
- </html>  
 
 
 
 
3、上传进度条页面(注意,这个是用一个iframe的源文件链接实现的)
 
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
- <%  
-     String path = request.getContextPath();  
-     String basePath = request.getScheme() + "://"  
-             + request.getServerName() + ":" + request.getServerPort()  
-             + path + "/";  
- %>  
-   
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
- <html>  
-     <head>  
-         <base href="<%=basePath%>">   
-         <script type="text/javascript" src="jquery-1.6.2.min.js">  
- </script>  
-         <style type="text/css">  
- <!--  
- body {  
-     margin-left: 0px;  
-     margin-top: 0px;  
-     margin-right: 0px;  
-     margin-bottom: 0px;  
-     font-size: 14px;  
- }  
- -->  
- </style>  
-         <script type="text/javascript">  
- function aa() {   
-     $("#div1").hide();  
-     $("#div2").show();  
-     $.post("sumPre", {}, function(data) {
-         $("#img").attr("width", parseInt(data) * 1.5);
-             $("#p").html(parseInt(data) + "%");
-         });  
-     window.setTimeout("aa()", 10);
- }  
- </script>  
-     </head>  
-   
-     <body>  
-         <div id="div1">  
-             <form name=‘aform1‘ method=‘post‘ action="fileUpload.action"  
-                 enctype="multipart/form-data">  
-                 <input name=‘file‘ type=‘file‘ />  
-                 <input type="submit" value="上传" onclick="return aa();" />  
-             </form>  
-         </div>  
-         <div id="div2" style="width: 400px; display: none;">  
-             正在上传...  
-             <img alt="" src="13221820.gif" width="16" height="16">  
-             <img id="img" alt="" src="percent.jpg" width="1" height="5">  
-             <span id="p" style="position: absolute; right: 30%; top: 0px;"></span>  
-         </div>  
-     </body>  
- </html>  
 
 
 
4、上传成功后的页面(就是一个简单的页面)
 
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
- <%  
- String path = request.getContextPath();  
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
- %>  
-   
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
- <html>  
-   <head>  
-     <base href="<%=basePath%>">  
-     <style type="text/css">  
-         <!--  
-         body {  
-             margin-left: 0px;  
-             margin-top: 5px;  
-             margin-right: 0px;  
-             margin-bottom: 0px;  
-             font-size: 14px;  
-         }  
-         -->  
-     </style>   
-   </head>   
-   <body>  
-     上传成功  
-   </body>  
- </html>  
 
 
 
 
 
5、Struts.xml 配置文件
 
 
- <!DOCTYPE struts PUBLIC  
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
- "http://struts.apache.org/dtds/struts-2.0.dtd">   
-     <!-- Author: yzx -->   
- <struts>   
-     <constant name="struts.multipart.maxSize" value="61440000000"></constant>  
-     <package name="fileUpload" namespace="/" extends="struts-default">  
-   
-         <action name="fileUpload" class="org.yzsoft.upload.action.UploadAction" method="upload">   
-             <result name="success">/filejd.jsp</result>  
-         </action>  
-         <action name="sumPre" class="org.yzsoft.upload.action.UploadAction" method="sumPre">  
-         </action>   
-     </package>   
- </struts>  
 
 
Struts2文件上传带进度条,虽然不是很完美,布布扣,bubuko.com
Struts2文件上传带进度条,虽然不是很完美
原文:http://www.cnblogs.com/564085446java/p/3836759.html