JQuery和Struts實現Ajax檔案上傳

來源:互聯網
上載者:User

首先說下使用的架構和外掛程式:

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;}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.