现在的位置: 首页 > 综合 > 正文

struts2+jquery(uploadify)文件上传

2013年10月22日 ⁄ 综合 ⁄ 共 5242字 ⁄ 字号 评论关闭

jsp页面

<%@ 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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>

  <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
  <script type="text/javascript" src="js/swfobject.js"></script>
  <script type="text/javascript" src="js/jquery.uploadify.v2.1.0.js"></script>
     <link rel="stylesheet" type="text/css"   href="Css/uploadify.css" />

  <script type="text/javascript">
        $(document).ready(function() {
            $("#fileupload").uploadify({
                /*注意前面需要书写path的代码*/
                'uploader'       : '<%=path%>/Images/uploadify.swf',
                'script'         : '<%=path%>/fileupload.action',
                'cancelImg'      : '<%=path%>/Images/cancel.png',
                'queueID'        : 'fileQueue', //和存放队列的DIV的id一致
                'fileDataName'   : 'fileupload', //和以下input的name属性一致
                'auto'           : false, //是否自动开始
                'multi'          : true, //是否支持多文件上传
                'buttonText'     : 'Browse', //按钮上的文字
                'simUploadLimit' : 3, //一次同步上传的文件数目
                'sizeLimit'      : 19871202, //设置单个文件大小限制
                'queueSizeLimit' : 2, //队列中同时存在的文件个数限制
                'fileDesc'       : '支持格式:jpg/gif/jpeg/png/bmp.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的

                'fileExt'        : '*.jpg;*.gif;*.jpeg;*.png;*.bmp',//允许的格式  
                 onComplete      : function (event, queueID, fileObj, response, data) {

                                       $('<li></li>').appendTo('.files').text(response);
                                       },
                                         onError: function(event, queueID, fileObj) {

                                            alert("文件:" + fileObj.name + "上传失败");

                                          },
                                         onCancel: function(event, queueID, fileObj){

                                             alert("取消了" + fileObj.name);
                                           }
                                          });

                                          });
        </script>

  <script type="text/javascript">
                  //必须的
    function uploadifyUpload(){
       $('#fileupload').uploadifyUpload();
   }
 </script>
 </head>
 <body>
  <table>
   <tr>
    <td>
     上传图片:
    </td>
    <td>
     <input type="file" name="fileupload" id="fileupload" />
     <div id="fileQueue"></div>
     <p>
      <a href="javascript:;" onClick="javascript:uploadifyUpload()">开始上传</a>&nbsp;
      <a href="javascript:jQuery('#fileupload').uploadifyClearQueue()">取消所有上传</a>
     </p>
     <ol class=files></ol>
    </td>
   </tr>
  </table>
 </body>
</html>

————————————————————————————————————————————————————————

action

package com.test.action;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport {

 private File fileupload; // 和JSP中input标记name同名

 // Struts2拦截器获得的文件名,命名规则,File的名字+FileName
 // 如此处为 'fileupload' + 'FileName' = 'fileuploadFileName'
 private String fileuploadFileName; // 上传来的文件的名字

 public File getFileupload() {
  return fileupload;
 }

 public void setFileupload(File fileupload) {
  this.fileupload = fileupload;
 }

 public String getFileuploadFileName() {
  return fileuploadFileName;
 }

 public void setFileuploadFileName(String fileuploadFileName) {
  this.fileuploadFileName = fileuploadFileName;
 }

 public String execute() throws Exception {
  String extName = ""; // 保存文件拓展名
  String newFileName = ""; // 保存新的文件名
  String nowTimeStr = ""; // 保存当前时间
  SimpleDateFormat sDateFormat;
  Random r = new Random();
  String savePath = ServletActionContext.getServletContext().getRealPath(
    ""); // 获取项目根路径
  savePath = savePath + "\\uploads\\"; /*
              * 拼串组成要上传保存文件的路径,即:D:\Program
              * Files\apache-tomcat-6.0.20\webapps\(项目名)\
              * 这样的路径
              */
       System.out.println("path:"+savePath);
  HttpServletResponse response = ServletActionContext.getResponse();
  response.setCharacterEncoding("utf-8"); // 务必,防止返回文件名是乱码

  // 生成随机文件名:当前年月日时分秒+五位随机数(为了在实际项目中防止文件同名而进行的处理)
  int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
  sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); // 时间格式化的格式
  nowTimeStr = sDateFormat.format(new Date()); // 当前时间
  // 获取拓展名
  if (fileuploadFileName.lastIndexOf(".") >= 0) {
   extName = fileuploadFileName.substring(fileuploadFileName
     .lastIndexOf("."));
  }
  newFileName = nowTimeStr + rannum + extName; // 文件重命名后的名字
  fileupload.renameTo(new File(savePath + newFileName)); // 保存文件
  response.getWriter().print(fileuploadFileName + " 上传成功");// 向页面端返回结果信息
  return null; // 这里不需要页面转向,所以返回空就可以了
 }
}

————————————————————————————————————————————————————

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name= "struts.multipart.maxSize" value="5242880" />
 <package name="test" extends="struts-default">

    <action name="fileupload" class="com.test.action.FileUploadAction">
   <result name="success">/upload.jsp</result>
  
  </action>
 </package>
</struts>

 

抱歉!评论已关闭.