springMVC结合AjaxForm上传文件


Posted in Javascript onJuly 12, 2016

最近在项目中需要上传文件文件,之前一直都是form提交的,尝试了一下AjaxForm,感觉还比较好用,写篇随笔mark下,供以后使用。
准备工作:
下载jquery-form.js

相关jar:

commons-fileupload-1.1.1.jar

commons-io-1.3.2.jar 

在spring-servlet.xml进行multipartResolver配置:

<bean id="multipartResolver"
 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="defaultEncoding" value="utf-8" />
 <property name="maxUploadSize" value="10485760000" />
 <property name="maxInMemorySize" value="40960" />
</bean>

这个是必须的,否则不好用。
页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="false" %>
<html>
<!-- 
- Author(s): xieshuang
- Date: 2016-06-20 13:46:20
- Description:
-->
<head>
<title>Title</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script src="<%=request.getContextPath()%>/common/nui/nui.js" type="text/javascript"></script>
<script src="<%=request.getContextPath()%>/common/nui/jquery/jquery-form.js" type="text/javascript"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/page4nui/master/projecttype/js/projecttype_import.js"></script>
<script type="text/javascript">
 var contextPath="<%=request.getContextPath()%>";
</script>
</head>
<body>
<div id="test" class="nui-fit" style="padding-top:5px;min-width:300px;min-height:180px;">
 <form id="fileUpload" method="post" enctype="multipart/form-data">
 <div id="dataImport" style="width:100%;overflow:hidden;">
  <table style="width:100%;table-layout:fixed;" class="nui-form-table" >
   <tr>
    <th align="right" style="width:25%" >选择文件:</th>
    <td>
     <input id="uploadFile" type="file" name="file" style="width:90%;"><font style="color:red;width:5%;"> *</font>
    </td>
   </tr>
  </table>  
 </div>
 
 <div style="width:100%;padding-top:10px;" align="center">
  <input style="width:60px;" iconCls="icon-ok" value="确定" type="submit" />
  <span style="display:inline-block;width:25px;"></span>
  <a class="nui-button" iconCls="icon-cancel" style="width:60px;" onclick="cancel">取消</a>
 </div> 
 </form>   
</div>
</body>
</html>

核心js:

var msg;
$(function(){
nui.parse();
//ajax配置
var options = { 
  url: contextPath+"/webapp/cfProjectType/importExcel",
  beforeSubmit: showRequest, //提交前处理 
  success:  showResponse, //处理完成 
  resetForm: true, 
  dataType: 'json' 
  }; 
 $('#fileUpload').submit(function() { //注意
  $(this).ajaxSubmit(options); 
  return false;//防止dialog 自动关闭
  });
})

//执行成功回调函数
function showResponse(e) {
 nui.hideMessageBox(msg);
 if (e.importFlag == true) {
  CloseWindow("ok");
 } else {
  //对错误的一些处理
 }
}

//提交前的一些校验
function showRequest(formData, jqForm, options){
 if(formData[0].value=="" || formData[0].value==null){
  nui.alert("请选择文件");
  return false;
 }
 var fileName = $("#uploadFile").val().split("\\").pop();
 var strs = new Array(); //定义一数组
 strs = fileName.split('.');
 var suffix = strs [strs .length - 1];
 if (suffix != 'xls' && suffix != 'xlsx') {
  nui.alert("请选择excel文件!");
  return false;
 }
 msg = nui.loading("Loading", "Please waiting");
}

java代码:

@SuppressWarnings("unchecked")
@RequestMapping("/webapp/cfProjectType/importExcel")
@ResponseBody
public Map<String, Object> importExcel(@RequestParam("file") MultipartFile[] files, HttpServletRequest request)
  throws Throwable {
 //long starttiem = System.currentTimeMillis();
 InputStream fis;
 fis = null;
 File fileIn = null;
 try {
  for (MultipartFile myfile : files) {
   if (!myfile.isEmpty()) {
    String realPath = request.getSession().getServletContext().getRealPath("/export");
    fileIn = new File(realPath);
    //判断上传文件的保存目录是否存在
    if (!fileIn.exists() && !fileIn.isDirectory()) {
     //创建目录
     fileIn.mkdirs(路径);
    }
    //将上传的文件复制到文件夹下
    myfile.transferTo(new File(路径+文件名));
   }
   }
  }

这里我之前用过另外一个方法FileUtils.copyInputStreamToFile(InputStream arg0, File arg1)同样能将文件保存到路径下面

更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。

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

Javascript 相关文章推荐
js中巧用cssText属性批量操作样式
Mar 13 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
jQuery获得document和window对象宽度和高度的方法
Mar 25 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
Aug 05 Javascript
js电话号码验证方法
Sep 28 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
关于Vue中axios的封装实例详解
Oct 20 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
Nov 11 Javascript
require简单实现单页应用程序(SPA)
Jul 12 #Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 #Javascript
javascript中Date对象应用之简易日历实现
Jul 12 #Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 #Javascript
浅谈angularJS中的事件
Jul 12 #Javascript
深入剖析JavaScript面向对象编程
Jul 12 #Javascript
JS及PHP代码编写八大排序算法
Jul 12 #Javascript
You might like
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
php中__toString()方法用法示例
2016/12/07 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python的requests网络编程包使用教程
2016/07/11 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
最新的咖啡店创业计划书
2013/12/30 职场文书
会计自我鉴定
2014/02/04 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
年度考核表个人总结
2015/03/06 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
一级电子管军用接收机测评
2022/04/05 无线电
利用Apache Common将java对象池化的问题
2022/06/16 Servers