JQuery和Struts实现Ajax文件上传

实现Struts2和jQuery的多文件上传及进度条显示 本文还有配套的精品资源,点击获取 简介:本项目通过结合Struts2的MVC架构和jQuery的AJAX功能,实现了Web端的多文件上传及进度条显示。利用Struts2的Action拦截器简化了文件上传过程,并使用jQuery进行异步文件上传和进度条更新。涵盖了文件验证、存储等后端逻辑和前端界面交互。项目包含了Struts2配置、Action类、前端页面、JavaScrip... 阅读详情
 

这里将为大家介绍JQuery和Struts实现Ajax文件上传,使用的框架分别是是struts1.3 jQuery1.3 ajaxupload.3.2.js(一个JQuery的插件,实现Ajax上传的效果)。

AD:


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

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

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

    JSP页面:

    1. <%@ page language="java"  pageEncoding="UTF-8"%> 
    2. <%@ include file="../../common/taglibs.jsp" %> 
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    4. <html> 
    5.   <head> 
    6.    <script type="text/javascript" src="${basePath }/script/jquery.js"></script> 
    7.    <script type="text/javascript" src="${basePath }/script/ajaxupload.3.2.js"></script> 
    8.     <title>Ajax文件上传示例</title> 
    9.     <style type="text/css"> 
    10.      #loading,ol{  
    11.       font-size:14px;  
    12.       display:none;  
    13.       color:orange;  
    14.       display:none;  
    15.      }  
    16.      ol{  
    17.       display:block;  
    18.      }  
    19.     </style> 
    20.  <script type="text/javascript"> 
    21.   $(function(){  
    22.      
    23.    new AjaxUpload("#fileButton",{  
    24.     action:"${basePath}/file.do?method=upload",  
    25.     autoSubmit:true,  
    26.     name:"myfile",  
    27.     onSubmit:function(file, extension){  
    28.      if (extension && /^(pdf|jpg|png|jpeg|gif)$/.test(extension))  
    29.      {  
    30.       $("#loading").html('<img src="${basePath}/images/loading.gif">');  
    31.       $("#loading").show();  
    32.       $("#fileButton").attr("disabled","disabled");  
    33.      }  
    34.      else  
    35.      {  
    36.       $("#loading").html("你所选择的文件不受系统支持");  
    37.       $("#loading").show();  
    38.       return false;  
    39.      }  
    40.     },  
    41.     onComplete:function(file, extension){  
    42.      $("#loading").html("文件上传成功");  
    43.      $("#loading").show();  
    44.      $("#fileButton").removeAttr("disabled");  
    45.     }  
    46.    });  
    47.      
    48.      
    49.    new Ajax_upload('#button3', {  
    50.     action: '${basePath}/file.do?method=upload',  
    51.     name: 'myfile',  
    52.     autoSubmit:true,  
    53.     onComplete : function(file, extension){  
    54.      $('<li></li>').appendTo($('.files')).text(file);  
    55.     }   
    56.    });  
    57.   });  
    58.  </script> 
    59.   </head> 
    60.     
    61.   <body>   
    62.     <input type="button" value="请选择您的照片" id="fileButton"/> 
    63.     <div id="loading"><img src="${basePath}/images/loading.gif"></div> 
    64.     <hr/> 
    65.      
    66.     <form action="#" method="post"> 
    67.  
    68.   <input id="button3" type="file" /> 
    69.   <p>上传成功的文件有:</p> 
    70.   <ol class="files"></ol> 
    71.   <p> 
    72.    <input class="submit" type="submit" value="表单提交"/>   
    73.   </p> 
    74.  
    75.  </form> 
    76.  
    77.   </body> 
    78. </html> 
    79. StrutsAction代码:package com.kay.crm.web;  
    80.  
    81. import javax.servlet.http.HttpServletRequest;  
    82. import javax.servlet.http.HttpServletResponse;  
    83.  
    84. import org.apache.struts.action.ActionForm;  
    85. import org.apache.struts.action.ActionForward;  
    86. import org.apache.struts.action.ActionMapping;  
    87. import org.apache.struts.actions.DispatchAction;  
    88. import org.springframework.stereotype.Controller;  
    89.  
    90. import com.kay.common.util.CosUtil;  
    91.  
    92. @Controller("/file")  
    93. public class FileUploadAction extends DispatchAction {  
    94.  
    95.  public ActionForward upload(ActionMapping mapping, ActionForm form,  
    96.    HttpServletRequest request, HttpServletResponse response) throws Exception {  
    97.     
    98.  
    99.   String fileName = CosUtil.upload(request);  
    100.   System.out.println(fileName);  
    101.     
    102.   return null;  
    103.  }  
    104. }Cos的工具类:package com.kay.common.util;  
    105.  
    106. import java.io.File;  
    107. import java.io.IOException;  
    108. import java.util.Enumeration;  
    109.  
    110. import javax.servlet.http.HttpServletRequest;  
    111.  
    112. import com.oreilly.servlet.MultipartRequest;  
    113.  
    114. public class CosUtil {  
    115.  
    116.  @SuppressWarnings({ "deprecation", "unchecked" })  
    117.  public static String upload(HttpServletRequest request) throws IOException  
    118.  {  
    119.   //存绝对路径  
    120.   //String filePath = "C://upload";  
    121.   //存相对路径  
    122.   String filePath = request.getRealPath("/")+"upload";  
    123.   File uploadPath = new File(filePath);  
    124.   //检查文件夹是否存在 不存在 创建一个  
    125.   if(!uploadPath.exists())  
    126.   {  
    127.    uploadPath.mkdir();  
    128.   }  
    129.   //文件最大容量 5M  
    130.   int fileMaxSize = 5*1024*1024;  
    131.    
    132.   //文件名  
    133.   String fileName = null;  
    134.   //上传文件数  
    135.   int fileCount = 0;  
    136.   //重命名策略  
    137.   RandomFileRenamePolicy rfrp=new RandomFileRenamePolicy();  
    138.   //上传文件  
    139.   MultipartRequest mulit = new MultipartRequest(request,filePath,fileMaxSize,"UTF-8",rfrp);  
    140.     
    141.   String userName = mulit.getParameter("userName");  
    142.   System.out.println(userName);  
    143.     
    144.   Enumeration filesname = mulit.getFileNames();  
    145.        while(filesname.hasMoreElements()){  
    146.             String name = (String)filesname.nextElement();  
    147.             fileName = mulit.getFilesystemName(name);  
    148.             String contentType = mulit.getContentType(name);  
    149.               
    150.             if(fileName!=null){  
    151.              fileCount++;  
    152.             }  
    153.             System.out.println("文件名:" + fileName);  
    154.             System.out.println("文件类型: " + contentType);  
    155.               
    156.        }  
    157.        System.out.println("共上传" + fileCount + "个文件!");  
    158.          
    159.        return fileName;  
    160.  }  
    161. }Cos上传组件用到的重命名策略类:package com.kay.common.util;  
    162.  
    163. import java.io.File;  
    164. import java.util.Date;  
    165.  
    166. import com.oreilly.servlet.multipart.FileRenamePolicy;  
    167.  
    168. public class RandomFileRenamePolicy implements FileRenamePolicy {  
    169.  
    170.  public File rename(File file) {  
    171.    String body="";  
    172.       String ext="";  
    173.       Date date = new Date();  
    174.       int pot=file.getName().lastIndexOf(".");  
    175.       if(pot!=-1){  
    176.           body= date.getTime() +"";  
    177.           ext=file.getName().substring(pot);  
    178.       }else{  
    179.           body=(new Date()).getTime()+"";  
    180.           ext="";  
    181.       }  
    182.       String newName=body+ext;  
    183.       file=new File(file.getParent(),newName);  
    184.       return file;  
    185.  
    186.  }  
    187. } 
    struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip struts2+ajax+jquery异步批量上传超大文件.zip 立即下载

    相关推荐

    struts2+jquery+ajax文件异步上传

    struts2+jquery+ajax实现了文件的异步上传,的MyEclipse编写的简单项目

    MultipartRequest上传文件

    http://zhanghy0525-126-com.iteye.com/blog/1452465     MultipartReques类主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。    [html] view plaincopy

    u011120983的博客 1万+

    Struts AJAX文件上传

    Struts jquery AJAX 文件上传

    ajax+struts实现文件上传

    一.input标签    &lt;input type="file" id="upload" name="pic" &gt;&lt;br&gt;二.ajax    1.&lt;script type="text/javascript" src="js/jquery-2.0.3.min.js" &gt;&lt;/script&gt;       &

    world_observer的博客 1422

    LT9211 单路mipi转双路mipi芯片,方案成熟,提供技术支持

    LT9211 单路mipi转双路mipi芯片

    TEL15012949045的博客 5020

    半监督的医学分割数据集(LA, Pancreas, ACDC和PROMISE12)分享

    这篇文章提供了四个常用的半监督医学分割数据集,所有数据集都已经被处理成了.h5文件。下载之后就可以直接使用

    qq_45691955的博客 4179

    jquery+ajax+struts实现文件上传

    首先在前段引入jquery.js和ajaxfileupload.js文件,一般引入放在最后面,这样可以通过jquery的jQuery.noConflict();方法避免冲突,其中jquery.js和ajaxfileupload.js建议放于引入的js中的最后面,比较容易解决冲突。引入js ajaxfileupload.js json及其依赖的jar html: j

    安德里亚的成长 9656

    kivy--入门(一)(Windows)python

    从零开始学习kivy 由于课程需要写一个app,还要写报告,这就很愁人,头秃,脑壳大。 虽然学过Android,但是小编对于Java就像对牛弹琴似的,不能说完全不懂,只能说Java这个语言不太适合我,不学还不行,还是先利用python的kivy编写一个吧。 在各大网站搜索开发app,发现适合写手机app的除了Android还有kivy,所以还是先学习如何使用吧! 文章目录从零开始学习kivy前言一、安装二、添加按钮+标签三、文本输入(TextInput)总结 前言 首先推荐这篇博客kivy的安装和使用

    刘念卿的博客 9969

    开发者导航:Struts2学习笔记之:文件上传

    Struts也提供了内置标签用于文件上传,我们称为文件选择域,这与html的标签是一样用的。

    开发者导航 1190

    【随机过程】第二章——随机过程概论

    随机过程概论,说明《随机过程》课程的教学大纲,对随机过程概念、研究对象和研究方法做了简要介绍。

    weixin_45225032的博客 1363

    Matlab实战:12种优化算法在CEC2014测试集上的性能对比(附完整代码)

    本文详细对比了12种优化算法在CEC2014测试集上的性能表现,包括PSO、DE、GA等主流算法。通过Matlab实现完整的实验流程,涵盖算法实现、参数设置、结果分析与可视化,为工程优化问题提供实用解决方案。特别关注收敛曲线和评价指标,帮助读者选择最适合特定场景的优化算法。

    wine的专栏 681

    Struts2 利用jquery.ajax实现文件上传并监控上传进度

    Struts2 使用jquery.ajax实现文件上传并监控上传进度 html 的内容 <body> <form action="${pageContext.request.contextPath }/upload/upFile.action" method="post" enctype="multipart/form-data" id="form"> table_hash:<input

    lzp13629752595的博客 745

    EMC工程师职业发展:从测试整改到系统设计的进阶之路

    电磁兼容(EMC)是确保电子设备在复杂电磁环境中可靠工作的关键技术,其核心在于控制电磁干扰(EMI)并提升抗扰度。其基本原理涉及电磁场理论、噪声耦合路径与滤波屏蔽技术。对于电子产品而言,EMC设计直接关系到能否通过CE、FCC等强制性认证,是产品上市和市场竞争力的关键。在工程实践中,EMC工程师需要从电路设计、PCB布局、元器件选型等源头入手,将EMC要求融入产品开发全流程,实现从后期“整改”到前期“设计预防”的价值跃迁。本文聚焦EMC工程师的核心能力体系构建与职业发展路径,深入探讨了如何从掌握标准测试、电

    weixin_30819085的博客 388

    Struts2+Ajax+Jquery的无刷新上传图片

    ####备注:这里不详细讲解Struts2的文件上传知识点,想了解请点击我另外一篇文章 http://blog.youkuaiyun.com/qq_25281057/article/details/52333677 ###这里我引用了两个js文件,一个Jquery和一个form表单插件 /js/jquery-1.8.2.js"> /js/jquery-form.js"> #

    LMK的博客 1153

    别再死记硬背公式了!用Multisim仿真软件,5分钟搞懂三极管放大电路的工作原理

    本文介绍如何利用Multisim仿真软件快速掌握三极管放大电路的工作原理,避免死记硬背公式。通过动态实验和参数调整,直观理解三极管的工作状态和放大效果,提升学习效率和实践能力。

    weixin_30566063的博客 568

    科研绘图系列:R语言绘制极坐标饼图(pie plot)

    科研绘图系列:R语言极坐标饼图(pie plot)

    专注生信领域 1053

    Struts2下利用JSON结合jQuery Form插件实现文件上传的问题与解决办法

    这两天要实现一个文件上传的功能。 开发环境是:服务器端Struts2,客户端jQuery,需要使用Ajax来实现,我在用Struts2开发Ajax应用时,都是基于JSON来实现的。   理论上文件上传是无法用Ajax来实现的:ajax基于javascript和xmlhtttp,其与服务器通信都是通过传递字符串。另外出于安全考虑,javascript是不能操作文件的,因此从理论上来说javas...

    ustcfxx的专栏 140

    efm32 入门.pdf

    本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

    jquery文件上传例子(两种方式)

    &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;title&gt;ajaxFileUpload文件上传例子&lt;/title&gt; &lt;script type="text/javascript" src="&lt;%=baseURL%&gt;/kinth/js/aja

    lihong22的专栏 707

    android 蓝牙通讯demo

    android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

    WINCC7.3破解文件

    WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

    Struts2 Ajax文件上传功能 使用Jquery.form插件

    jquery form 教程地址:http://www.malsup.com/jquery/form/#getting-started Form表单: Upload : JS 脚本 //upload excel

    Xwin1989的专栏 5677

    文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

    主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

    ajaxFileUpload 异步上传文件配合Struts2的简单使用

    我在用SSH框架写一个简单的企业网站的时候需要对产品的图片进行异步上传,经过研究成功实现了ajaxFileUpload+Struts2的异步上传功能,所以抽空做下总结,本文主要讲解ajaxFileUpload 异步上传文件配合Struts2的简单使用 jQuery插件ajaxFileUpload可以实现ajax文件上传,使用非常简单。 准备环境 所需环境: jquery.js aja

    C. 5944

    ajax struts1异步上传文件,JQuery、ajaxFileUpload、Struts2和注解异步上传文件

    页面:![在此输入图片描述][1]第一步:需要导入jquery-1.7.2.min.js、ajaxfileupload.js两个文件,在jsp页面引入的顺序必须是jquery-1.7.2.min.js在先,ajaxfileupload.js在后,因为ajaxfileupload.js依赖与jquery包,所以你懂得!jsp页面代码:Uploadjs代码:function FileUpload(bu...

    weixin_35197990的博客 256

    使用ajax异步刷新文件的上传和下载

    主要的JSP页面&lt;div id="light" class="white_content"&gt;    &lt;div class="uploader white"&gt; &lt;form action="" method="post" enctype="multipart/form-data"&gt; &lt;input

    qq_38634142的博客 876
    上一篇: Spring 注解
    下一篇: 弹层
    lb8607
    博客等级 码龄18年 17粉丝 18原创
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值