• struts2+jquery之form插件实现异步上传图片并显示


    一、所需jar包

    二、index.jsp

    其中jquery-1.4.2.min.js和jquery.form.js需要网上自己去下载

     1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>  
     2 <%  
     3     String path = request.getContextPath();  
     4     String basePath = request.getScheme() + "://"  
     5             + request.getServerName() + ":" + request.getServerPort()  
     6             + path + "/";  
     7 %>  
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
     9 <html>  
    10     <head>  
    11         <base href="<%=basePath%>">  
    12         <mce:script type="text/javascript" src="<%=path%><!--  
    13 /js/jquery-1.4.2.min.js">  
    14 // --></mce:script>  
    15         <mce:script type="text/javascript" src="<%=path%><!--  
    16 /js/jquery.form.js">  
    17 // --></mce:script>  
    18           
    19         <mce:script type="text/javascript"><!--  
    20 function uploadImage() {  
    21     $(document)  
    22             .ready(  
    23                     function() {  
    24                         var options = {  
    25                             url : "<%=path%>/uploadFile.action",  
    26                             type : "POST",  
    27                             dataType : "script",  
    28                             success : function(msg) {  
    29                                 if (msg.indexOf("#") > 0) {  
    30                                     var data = msg.split("#");  
    31                                     $("#tipDiv").html(data[0]);  
    32                                     $("#showImage").html("<img src='<%=path%>/showImage.action?imageUrl="+data[1]+"'/>");  
    33                                 } else {  
    34                                     $("#tipDiv").html(msg);  
    35                                 }  
    36                             }  
    37                         };  
    38                         $("#form2").ajaxSubmit(options);  
    39                         return false;  
    40                     });  
    41 }  
    42 // --></mce:script>  
    43     </head>  
    44     <body>  
    45     <center>  
    46         <form id="form2" method="post" enctype="multipart/form-data">  
    47             <table width="400" border="1" cellspacing="1" cellpadding="10">  
    48                 <tr>  
    49                     <td height="25">  
    50                         浏览图片:  
    51                     </td>  
    52                     <td>  
    53                         <input id="fileupload" name="fileupload" type="file" />  
    54                         <div id="tipDiv"></div>  
    55                     </td>  
    56                 </tr>  
    57                 <tr>  
    58                     <td colspan="2" align="center">  
    59                         <input type="button" class="right-button02"  
    60                             onclick="uploadImage()" value="上传" />  
    61                     </td>  
    62                 </tr>  
    63             </table>  
    64         </form>  
    65         <br>  
    66                      图片预览  
    67         <div id="showImage"></div>  
    68         </center>  
    69     </body>  
    70 </html>  

    三、UploadUtilAction.java

      1 package action;  
      2 import java.awt.Image;  
      3 import java.awt.image.RenderedImage;  
      4 import java.io.File;  
      5 import java.io.FileInputStream;  
      6 import java.io.IOException;  
      7 import java.io.InputStream;  
      8 import java.io.OutputStream;  
      9 import java.io.PrintWriter;  
     10 import java.text.SimpleDateFormat;  
     11 import java.util.Date;  
     12 import java.util.Random;  
     13 import javax.imageio.ImageIO;  
     14 import javax.servlet.http.HttpServletResponse;  
     15 import org.apache.commons.io.FileUtils;  
     16 import org.apache.struts2.ServletActionContext;  
     17 import org.apache.struts2.interceptor.ServletResponseAware;  
     18 import util.UtilCommon;  
     19 import com.opensymphony.xwork2.ActionSupport;  
     20 public class UploadUtilAction extends ActionSupport implements  
     21         ServletResponseAware {  
     22     private File fileupload; // 和JSP中input标记name同名  
     23     private String imageUrl;  
     24     private String attachmentUrl;  
     25     private String fileRealName;  
     26     private HttpServletResponse response;  
     27     // Struts2拦截器获得的文件名,命名规则,File的名字+FileName  
     28     // 如此处为 'fileupload' + 'FileName' = 'fileuploadFileName'  
     29     private String fileuploadFileName; // 上传来的文件的名字  
     30     public String uploadFile() {  
     31         String extName = ""; // 保存文件拓展名  
     32         String newFileName = ""; // 保存新的文件名  
     33         String nowTimeStr = ""; // 保存当前时间  
     34         PrintWriter out = null;  
     35         SimpleDateFormat sDateFormat;  
     36         Random r = new Random();  
     37         String savePath = ServletActionContext.getServletContext().getRealPath(  
     38                 ""); // 获取项目根路径  
     39         savePath = savePath + "/file/";  
     40         HttpServletResponse response = ServletActionContext.getResponse();  
     41         response.setCharacterEncoding("gbk"); // 务必,防止返回文件名是乱码  
     42         // 生成随机文件名:当前年月日时分秒+五位随机数(为了在实际项目中防止文件同名而进行的处理)  
     43         int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数  
     44         sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); // 时间格式化的格式  
     45         nowTimeStr = sDateFormat.format(new Date()); // 当前时间  
     46         // 获取拓展名  
     47         if (fileuploadFileName.lastIndexOf(".") >= 0) {  
     48             extName = fileuploadFileName.substring(fileuploadFileName  
     49                     .lastIndexOf("."));  
     50         }  
     51         try {  
     52             out = response.getWriter();  
     53             newFileName = nowTimeStr + rannum + extName; // 文件重命名后的名字  
     54             String filePath = savePath + newFileName;  
     55             filePath = filePath.replace("//", "/");  
     56             //检查上传的是否是图片  
     57             if (UtilCommon.checkIsImage(extName)) {  
     58                 FileUtils.copyFile(fileupload, new File(filePath));  
     59                 out.print("<font color='red'>" + fileuploadFileName  
     60                         + "上传成功!</font>#" + filePath + "#" + fileuploadFileName);  
     61             } else {  
     62                 out.print("<font color='red'>上传的文件类型错误,请选择jpg,jpeg,png和gif格式的图片!</font>");  
     63             }  
     64             out.flush();  
     65             out.close();  
     66         } catch (IOException e) {  
     67             e.printStackTrace();  
     68             out.print("上传失败,出错啦!");  
     69         }  
     70         return null;  
     71     }  
     72     public String showImage() throws Exception {  
     73         // 根据图片地址构造file对象  
     74         File file = new File(imageUrl);  
     75         InputStream is = new FileInputStream(file);  
     76         Image image = ImageIO.read(is);// 读图片  
     77         String imageType = imageUrl.substring(imageUrl.lastIndexOf(".") + 1);  
     78         RenderedImage img = (RenderedImage) image;  
     79         OutputStream out = response.getOutputStream();  
     80         ImageIO.write(img, imageType, out);  
     81         out.flush();  
     82         out.close();  
     83         return null;  
     84     }  
     85     public File getFileupload() {  
     86         return fileupload;  
     87     }  
     88     public void setFileupload(File fileupload) {  
     89         this.fileupload = fileupload;  
     90     }  
     91     public String getImageUrl() {  
     92         return imageUrl;  
     93     }  
     94     public void setImageUrl(String imageUrl) {  
     95         this.imageUrl = imageUrl;  
     96     }  
     97     public String getAttachmentUrl() {  
     98         return attachmentUrl;  
     99     }  
    100     public void setAttachmentUrl(String attachmentUrl) {  
    101         this.attachmentUrl = attachmentUrl;  
    102     }  
    103     public String getFileRealName() {  
    104         return fileRealName;  
    105     }  
    106     public void setFileRealName(String fileRealName) {  
    107         this.fileRealName = fileRealName;  
    108     }  
    109     public void setServletResponse(HttpServletResponse response) {  
    110         this.response = response;  
    111     }  
    112     public String getFileuploadFileName() {  
    113         return fileuploadFileName;  
    114     }  
    115     public void setFileuploadFileName(String fileuploadFileName) {  
    116         this.fileuploadFileName = fileuploadFileName;  
    117     }  
    118       
    119 }  

    UtilCommon.java

     1 package util;  
     2 import java.text.SimpleDateFormat;  
     3 import java.util.Date;  
     4 public class UtilCommon {  
     5     public static String getSerial(Date date, int index) {  
     6         long msel = date.getTime();  
     7         SimpleDateFormat fm = new SimpleDateFormat("MMddyyyyHHmmssSS");  
     8         msel += index;  
     9         date.setTime(msel);  
    10         String serials = fm.format(date);  
    11         return serials;  
    12     }  
    13     // 检查是否是图片格式  
    14     public static boolean checkIsImage(String imgStr) {  
    15         boolean flag = false;  
    16         if (imgStr != null) {  
    17             if (imgStr.equalsIgnoreCase(".gif")  
    18                     || imgStr.equalsIgnoreCase(".jpg")  
    19                     || imgStr.equalsIgnoreCase(".jpeg")  
    20                     || imgStr.equalsIgnoreCase(".png")) {  
    21                 flag = true;  
    22             }  
    23         }  
    24         return flag;  
    25     }  
    26 }  

    struts.xml

    1 <?xml version="1.0" encoding="utf-8" ?>     
    2 <!DOCTYPE struts PUBLIC      
    3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"      
    4     "http://struts.apache.org/dtds/struts-2.0.dtd">  
    5 <struts>  
    6     <package name="struts2" namespace="/" extends="struts-default">  
    7         <action name="*" class="action.UploadUtilAction" method="{1}"></action>  
    8     </package>  
    9 </struts>     

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
     5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
     6     <display-name>struts 2.0</display-name>  
     7     <!-- 定义structs2的FilterDispatcher的Filter -->  
     8     <filter>  
     9         <!-- 定义核心Filter的名字 -->  
    10         <filter-name>struts2</filter-name>  
    11         <!-- 定义核心Filter的实现类 -->  
    12         <filter-class>  
    13             org.apache.struts2.dispatcher.FilterDispatcher  
    14         </filter-class>  
    15     </filter>  
    16     <filter-mapping>  
    17         <filter-name>struts2</filter-name>  
    18         <url-pattern>/*</url-pattern>  
    19     </filter-mapping>  
    20     <welcome-file-list>  
    21         <welcome-file>index.jsp</welcome-file>  
    22     </welcome-file-list>  
    23 </web-app>  

    运行效果

    源码可以去http://download.csdn.net/source/3351355 下载

  • 相关阅读:
    Scrapy爬虫快速入门
    python垃圾回收机制
    django项目的uwsgi方式启停脚本
    hdu 5504 GT and sequence
    python 在 for i in range() 块中改变 i 的值的效果
    linux 在终端中打开图形化文件管理器
    apache 支持 php
    Mysql 学习记录
    git 导入代码到已有仓库
    python import 自己的包
  • 原文地址:https://www.cnblogs.com/jiayongchao/p/3002723.html
Copyright © 2020-2023  润新知