springmvc利用jquery.form插件异步上传文件示例

发布时间 - 2026-01-10 22:47:44    点击率:

需要的下载文件:

jQuery.form.js

jquery.js

commons-fileupload.jar

commons-io.jar

示例图片

pom.xml

<!-- 文件上传 --> 
  <dependency> 
   <groupId>commons-fileupload</groupId> 
   <artifactId>commons-fileupload</artifactId> 
   <version>1.3</version> 
  </dependency> 
  <dependency> 
   <groupId>commons-io</groupId> 
   <artifactId>commons-io</artifactId> 
   <version>2.4</version> 
  </dependency> 

web.xml 解决上传后中文文件名乱码问题

<!-- 解决提交时中文乱码问题 start --> 
 <filter> 
   <filter-name>Set Character Encoding</filter-name> 
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
   <init-param> 
    <param-name>encoding</param-name> 
    <param-value>UTF-8</param-value> 
   </init-param> 
 </filter> 
 <filter-mapping> 
  <filter-name>Set Character Encoding</filter-name> 
  <url-pattern>/*</url-pattern> 
 </filter-mapping> 
 <!-- 解决提交时中文乱码问题 end --> 

servlet-context.xml中添加对上传的支持

<!-- 支持文件上传 --> 
 <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
 </beans:bean> 

jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<% 
 String path = request.getContextPath(); 
 String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path; 
%> 
<html lang="us"> 
<head> 
 <meta charset="utf-8"> 
 <title>springmvc上传文件</title> 
 <link type="text/css" href="<%=basePath%>/resources/css/jquery-ui/jquery-ui.css" rel="stylesheet" /> 
 <link href="<%=basePath%>/resources/themes/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> 
</head> 
<body> 
 <h2>springmvc上传文件</h2> 
 <br/> 
 
 
<br/> 
 <div class="alert alert-success" id="formSucc"></div> 
 <br/> 
   
 <form role="form" id="uploadForm" name="uploadForm" enctype="multipart/form-data"> 
  <div class="form-group"> 
    <label>项目名称</label> 
  </div> 
  <div class="form-group"> 
    <label> 
    <input class="form-control" maxlength="30" id="projectName" name="projectName"> 
    </label> 
  </div> 
  <div class="form-group"> 
    <label>File input</label> 
    <input type="file" name="file"> 
   </div> 
   
  <button class="btn" type="button" id="doSave">提交</button> 
   
 </form> 
 <div></div> 
</body> 
</html> 
 
 
<script type="text/javascript" src="<%=basePath%>/resources/js/jquery/jquery-1.11.3.min.js"></script> 
<script type="text/javascript" src="<%=basePath%>/resources/js/jquery-ui/jquery-ui.js"></script> 
<script type="text/javascript" src="<%=basePath%>/resources/js/jqueryForm/jquery.form.js"></script> 
<script> 
 
$(function(){ 
 $("#formSucc").hide(); 
  
 $("#doSave").click(function(){ 
  var requestUrl = "<%=basePath%>/widget/saveFile.json"; 
  var projectName = $("#projectName").val(); 
  $("#uploadForm").ajaxSubmit({ 
    type: 'post', 
    url: requestUrl, 
    //data: {projectName: projectName}, //应该把这个去掉,要不然,值会有重复,因为form提交时已经做了一次提交了。 
                 //如果projectName的值为"tt",如果这个地方不去掉,那么提交接收的值变成"tt,tt"了。 
    contentType: "application/x-www-form-urlencoded; charset=utf-8", 
    success: function(data) { 
    if(data.success){ 
     $(".infoTips").remove(); 
     $("#formSucc").show(); 
     $("#formSucc").append("<label class='infoTips'>"+data.message+"</label>"); 
    } 
    } 
  }); 
 }); 
  
}); 
 
 
 
</script> 

Java的controller文件

package com.paincupid.springmvc.widget.controller; 
 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.List; 
 
import javax.annotation.Resource; 
import javax.servlet.http.HttpServletRequest; 
 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.multipart.MultipartFile; 
 
import com.paincupid.springmvc.finance.domain.Finance; 
import com.paincupid.springmvc.test.domain.Person; 
import com.paincupid.springmvc.util.BaseJsonRst; 
import com.paincupid.springmvc.util.CreatMockData; 
 
/** 
 * 
 * @author arthur.paincupid.lee 
 * @since 2016.01.24 
 * 
 */ 
@Controller 
@RequestMapping("/widget") 
public class widgetController { 
 private static final Logger log = LoggerFactory.getLogger(widgetController.class); 
  
 /** 
  * 上传文件 
  * 在前台的访问路径为: http://localhost:8080/springmvc/widget/uploadFile/view 
  * @return 
  */ 
 @RequestMapping("/uploadFile/view") 
 public String uploadFile() { 
  return "widget/uploadFile"; 
 } 
  
 @ResponseBody 
 @RequestMapping(value="/saveFile", method=RequestMethod.POST) 
 public BaseJsonRst saveFile(@RequestParam MultipartFile file, 
   @RequestParam String projectName) { 
  BaseJsonRst view = new BaseJsonRst(); 
  String orgiginalFileName = ""; 
  try { 
   String fileName = file.getName(); 
   InputStream inputStream = file.getInputStream(); 
   String content = file.getContentType(); 
   orgiginalFileName = file.getOriginalFilename(); 
   log.info("fileName: "+fileName+", inputStream: "+ inputStream 
      +"\r\n content: "+content+", orgiginalFileName: ="+ orgiginalFileName 
      +"\r\n projectName: "+ projectName);  
  } catch (IOException e) { 
   e.printStackTrace(); 
  } 
  view.setSuccess(true); 
  view.setMessage("上传: "+orgiginalFileName+" 文件成功!"); 
  return view; 
 } 
 
  
} 

下载源码地址:http://xiazai./201701/yuanma/springmvc_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# springmvc  # 异步上传  # springmvc异步上传文件  # jqueryform  # SpringMVC异步处理操作(Callable和DeferredResult)  # SpringMVC使用MultipartFile 实现异步上传方法介绍  # springmvc处理异步请求的示例  # SpringMVC环境下实现的Ajax异步请求JSON格式数据  # Spring-MVC异步请求之Servlet异步处理  # 上传文件  # 上传  # 文件上传  # 会有  # 值为  # 大家多多  # basePath  # getScheme  # getContextPath  # request  # head  # meta  # lang  # getServerName  # getServerPort  # charset  # taglib  # uri  # html  # pageEncoding 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: jQuery中的100个技巧汇总  Laravel如何自定义分页视图?(Pagination示例)  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  简单实现jsp分页  在线制作视频的网站有哪些,电脑如何制作视频短片?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel如何创建自定义Artisan命令?(代码示例)  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  WEB开发之注册页面验证码倒计时代码的实现  北京企业网站设计制作公司,北京铁路集团官方网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何用y主机助手快速搭建网站?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Python文件流缓冲机制_IO性能解析【教程】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel distinct去重查询_Laravel Eloquent去重方法  php json中文编码为null的解决办法  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何注册花生壳免费域名并搭建个人网站?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何快速搭建高效服务器建站系统?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  活动邀请函制作网站有哪些,活动邀请函文案?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  如何在企业微信快速生成手机电脑官网?  JavaScript实现Fly Bird小游戏  网站制作价目表怎么做,珍爱网婚介费用多少?  linux写shell需要注意的问题(必看)  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  昵图网官网入口 昵图网素材平台官方入口  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  利用python获取某年中每个月的第一天和最后一天  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel安装步骤详细教程_Laravel环境搭建指南  Java类加载基本过程详细介绍  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境