JQuery和Struts实现Ajax文件上传

来源:互联网 发布:网络优化 编辑:程序博客网 时间:2024/05/18 22:17

首先说下使用的框架和插件:

struts1.3   jQuery1.3   ajaxupload.3.2.js(一个JQuery的插件,实现Ajax上传的效果)

COS(O’relly的一个性能很棒的上传组件)

jsp页面:

<%@ page language="java"  pageEncoding="UTF-8"%><%@ include file="../../common/taglibs.jsp" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  <script type="text/javascript" src="${basePath }/script/jquery.js"></script>  <script type="text/javascript" src="${basePath }/script/ajaxupload.3.2.js"></script>    <title>Ajax文件上传示例</title>    <style type="text/css">    #loading,ol{    font-size:14px;    display:none;    color:orange;    display:none;    }    ol{    display:block;    }    </style><script type="text/javascript">$(function(){new AjaxUpload("#fileButton",{action:"${basePath}/file.do?method=upload",autoSubmit:true,name:"myfile",onSubmit:function(file, extension){if (extension && /^(pdf|jpg|png|jpeg|gif)$/.test(extension)){$("#loading").html('<img src="${basePath}/images/loading.gif">');$("#loading").show();$("#fileButton").attr("disabled","disabled");}else{$("#loading").html("你所选择的文件不受系统支持");$("#loading").show();return false;}},onComplete:function(file, extension){$("#loading").html("文件上传成功");$("#loading").show();$("#fileButton").removeAttr("disabled");}});new Ajax_upload('#button3', {action: '${basePath}/file.do?method=upload',name: 'myfile',autoSubmit:true,onComplete : function(file, extension){$('<li></li>').appendTo($('.files')).text(file);}});});</script>  </head>    <body>     <input type="button" value="请选择您的照片" id="fileButton"/>    <div id="loading"><img src="${basePath}/images/loading.gif"></div>    <hr/>       <form action="#" method="post"><input id="button3" type="file" /><p>上传成功的文件有:</p><ol class="files"></ol><p><input class="submit" type="submit" value="表单提交"/></p></form>  </body></html>StrutsAction代码:
package com.kay.crm.web;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.springframework.stereotype.Controller;import com.kay.common.util.CosUtil;@Controller("/file")public class FileUploadAction extends DispatchAction {public ActionForward upload(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {String fileName = CosUtil.upload(request);System.out.println(fileName);return null;}}
Cos的工具类:
package com.kay.common.util;import java.io.File;import java.io.IOException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import com.oreilly.servlet.MultipartRequest;public class CosUtil {@SuppressWarnings({ "deprecation", "unchecked" })public static String upload(HttpServletRequest request) throws IOException{//存绝对路径//String filePath = "C://upload";//存相对路径String filePath = request.getRealPath("/")+"upload";File uploadPath = new File(filePath);//检查文件夹是否存在 不存在 创建一个if(!uploadPath.exists()){uploadPath.mkdir();}//文件最大容量 5Mint fileMaxSize = 5*1024*1024;//文件名String fileName = null;//上传文件数int fileCount = 0;//重命名策略RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();//上传文件MultipartRequest mulit = new MultipartRequest(request,filePath,fileMaxSize,"UTF-8",rfrp);String userName = mulit.getParameter("userName");System.out.println(userName);Enumeration filesname = mulit.getFileNames();      while(filesname.hasMoreElements()){           String name = (String)filesname.nextElement();           fileName = mulit.getFilesystemName(name);           String contentType = mulit.getContentType(name);                      if(fileName!=null){           fileCount++;           }           System.out.println("文件名:" + fileName);           System.out.println("文件类型: " + contentType);                 }      System.out.println("共上传" + fileCount + "个文件!");            return fileName;}}
Cos上传组件用到的重命名策略类:
package com.kay.common.util;import java.io.File;import java.util.Date;import com.oreilly.servlet.multipart.FileRenamePolicy;public class RandomFileRenamePolicy implements FileRenamePolicy {public File rename(File file) {  String body="";      String ext="";      Date date = new Date();      int pot=file.getName().lastIndexOf(".");      if(pot!=-1){          body= date.getTime() +"";          ext=file.getName().substring(pot);      }else{          body=(new Date()).getTime()+"";          ext="";      }      String newName=body+ext;      file=new File(file.getParent(),newName);      return file;}}
原创粉丝点击