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 设置url参数
Jul 08 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
JS图片无缝、平滑滚动代码
Mar 11 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 Javascript
iphone刘海屏页面适配方法
May 07 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 02 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
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
django 外键model的互相读取方法
2018/12/15 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python 硬币兑换问题
2019/07/29 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
支教自我鉴定
2014/01/18 职场文书
打架检讨书100字
2014/01/19 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
支教个人总结
2015/03/04 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
毕业典礼主持词
2015/06/29 职场文书
财务人员入职担保书
2015/09/22 职场文书
大学班长竞选稿
2015/11/20 职场文书
七年级作文之游记
2019/12/11 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
Go 内联优化让程序员爱不释手
2022/06/21 Golang