jquery ajax+spring mvc上传文件
来源:互联网 发布:godaddy域名push教程 编辑:程序博客网 时间:2024/06/11 05:30
导入commons-fileupload-1.2.2.jar和commons-io-2.4.jar及spring的一些jar包
创建上传处理类UploadAction
package com.mysite.test;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FileUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartResolver;@Controllerpublic class UploadAction {private static final Logger logger = LoggerFactory.getLogger(UploadAction.class);private final static int maxSize = 209715200;// 1024*1024*200 (200M)private String filePath="/uploads/";@RequestMapping(value = "/upload.do")public void fileUpload(HttpServletRequest request, HttpServletResponse response) {CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());multipartResolver.setDefaultEncoding("UTF-8");if (multipartResolver.isMultipart(request)) {StringBuffer result = new StringBuffer();long startTime = System.currentTimeMillis(); // 获取开始时间MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;Iterator<String> ite = multiRequest.getFileNames();response.setCharacterEncoding("UTF-8");PrintWriter writer = null;try {writer = response.getWriter();while (ite.hasNext()) {MultipartFile file = multiRequest.getFile(ite.next());if (file.getSize() > maxSize) {result.append("文件[" + file.getOriginalFilename() + "]的大小超过限制(200M)").append("\r\n");writer.print(result);writer.flush();return;}if (file != null) {try {File serverPath = new File(filePath);if (!serverPath.exists()) {logger.warn("The path of server save file is not exists!");serverPath.mkdirs();}if (!serverPath.isDirectory()) {logger.warn("The path of server save file is not directory!");return;}if (!serverPath.canWrite() || !serverPath.canRead()) {logger.warn("The path of server save file cannot write or cannot read!");serverPath.setReadable(true);serverPath.setWritable(true);}File localFile = new File(filePath + file.getOriginalFilename());if (localFile.isFile() && localFile.exists()) {String name = localFile.getName();String oldName = name.substring(0, name.lastIndexOf(".")) + "_" + System.currentTimeMillis() + "_old" + name.substring(name.lastIndexOf("."));FileUtils.copyFile(localFile, new File(filePath + oldName));FileUtils.forceDelete(localFile);}file.transferTo(localFile); // 将上传文件写到服务器上指定的文件long endTime = System.currentTimeMillis(); // 获取结束时间logger.info("upload file success!expend {} ms", (endTime - startTime));String filePath = localFile.getAbsolutePath();logger.info("the file save to:{}", filePath);result.append("The file [").append(file.getOriginalFilename()).append("] upload success!\n");} catch (IOException e) {logger.error("has a error:{}", e);}}}writer.print(result);writer.flush();} catch (IOException e1) {e1.printStackTrace();} finally {if (writer != null) {writer.close();}}}}}
在springmvc-servlet.xml配置上传属性
<!-- 文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value="209715200"></property><!-- 最大上传文件大小 200M--> <property name="maxInMemorySize" value="40960"></property> </bean>
jsp导入js类库,因为样式是使用的easyui,所有需要引入easyui的js及样式
<script type="text/javascript" src="${base}js/jquery-1.8.3.min.js"></script><script type="text/javascript" src="${base}js/ajaxFileUpload.js"></script><script type="text/javascript" src="${base}js/jquery.easyui.min.js"></script>
导入样式文件
<link rel="stylesheet" type="text/css" href="${base}css/easyui.css"><link rel="stylesheet" type="text/css" href="${base}css/icon.css"><link rel="stylesheet" type="text/css" href="${base}css/color.css"><link rel="stylesheet" type="text/css" href="${base}css/demo.css">
css
.aitem {margin: 10px 0 5px 0;padding-bottom: 5px;border-bottom: 1px solid #eee;}.aitem .item {height: 40px;line-height: 40px;vertical-align: middle;}.aitem span {padding-right: 5px;}.aitem .title {width: 120px;}.aitem input[type="text"],input[type="password"],input[type="file"] {width: 200px;}
/*a upload */.a-upload {text-decoration:none; padding: 2px 10px; height: 20px; line-height: 20px; position: relative; cursor: pointer; color: #777; background: #eee; border: 1px solid #ddd; border-radius: 4px; overflow: hidden; display: inline-block; *display: inline; *zoom: 1}.a-upload input { position: absolute; width:100%; right: 0; top: 0; opacity: 0; filter: alpha(opacity=0); cursor: pointer}.a-upload:hover {color: #444;background: #eee;border-color: #ccc;text-decoration: none;}#fileName{color: #444;height: 24px;line-height: 24px;overflow: hidden;display: inline-block;*display: inline;*zoom: 1}
jsp
<div id="dlg" class="easyui-dialog" data-options="buttons:'#dlg-buttons',modal:true,closed:true" style="width:450px;height:330px;"> <form id="fm" name="fm" method="post" novalidate enctype="multipart/form-data"> <div id="uploadfile" class="aitem" style="display:block;"> <label><span style="color:red;">*</span>需更新的文件 (文件格式:zip,tar,jar,properties,bat,sh)</label> <div class="item" style="height: 45px"> <a href="javascript:;" class="a-upload"> <input type="file" name="file" id="file" onchange="change(event);">选择文件 </a> <span id="fileName"></span> </div> <label>文件最大不能超过200M</label> </div> </form></div><div id="dlg-buttons"> <button class="easyui-linkbutton c6" id="confirm" style="width:80px">确定</button> <button class="easyui-linkbutton c5" onclick="closeDialog('dlg')" style="width:80px">关闭窗口</button></div>
//上传文件,点击选择文件后获取文件名&文件大小function change(event){ event.stopPropagation(); var src=event.target || window.event.srcElement; //获取事件源,兼容chrome/IE //alert( src.value ); //测试chrome浏览器、IE6,获取的文件名带有文件的path路径 //下面把路径截取为文件名 var path=src.value; if(!path){ return false; } var filename=path.substring( path.lastIndexOf('\\')+1 ); //获取文件名的后缀名(文件格式) var suffix=path.substring( path.lastIndexOf('.')+1 ); //zip,tar,jar,properties,bat,sh if(suffix.toLowerCase()!="zip"&&suffix.toLowerCase()!="tar"&&suffix.toLowerCase()!="jar"&&suffix.toLowerCase()!="properties" &&suffix.toLowerCase()!="bat"&&suffix.toLowerCase()!="sh"){ $.messager.alert("警告","只能上传以下后缀名的文件\nzip,tar,jar,properties,bat,sh"); //$("input[name='file']").val(""); src.value=""; if(src.id=='file')$("#fileName").empty(); else $("#selfFileName").empty(); return false; } var file_size = 0; if ($.browser.msie) { var img = new Image(); img.src = path; file_size = img.fileSize; } else { file_size = src.files[0].size; } var size = file_size / 1024; var maxSize = 200*1024;//200M if (size > maxSize) { $.messager.alert("警告","只能上传200M以下的文件"); src.value=""; if(src.id=='file')$("#fileName").empty(); else $("#selfFileName").empty(); return false; } if(src.id=='file')$("#fileName").empty().text(filename); else $("#selfFileName").empty().text(filename); return true;};//确认上传按钮绑定事件$("#confirm").bind("click", function(event) { var file=$("input[name='file']").val(); $.messager.confirm("确认","你确定要这次操作吗?", function (r) { if (r) { if(!file){ $.messager.alert("警告","请选择需要上传的文件!","warning"); return false; } var command='1'; $.ajaxFileUpload({ fileElementId: 'file', url: 'upload.do', data : { /*command : command*///传参数 }, dataType: 'text', success: function (data, status) { if (status == "success") { $.messager.alert("",data); } }, error: function (XMLHttpRequest, status, error) { var msg = "服务器返回消息:" + XMLHttpRequest.responseText; $.messager.alert('提示',msg); }, complete: function (obj) { } }); } });});
co
cor
0 0
- jquery ajax+spring mvc上传文件
- JQuery的AJAX与Spring MVC实现异步文件上传
- spring MVC 现实Jquery ajax多个文上传
- (MVC)jquery+ajax上传文件
- freemarker+ajax+Spring mvc+SFTP上传文件
- spring-mvc ajax文件上传详解
- spring mvc jquery 上传
- Asp.Net Mvc 使用jQuery实现Ajax文件上传
- 基于spring mvc的ajax异步上传文件
- spring mvc文件下载 及 ajax异步上传图片
- spring mvc 文件上传
- spring MVC 文件上传
- Spring MVC文件上传
- Spring MVC文件上传
- spring mvc 文件上传
- Spring mvc 文件上传
- spring mvc 文件上传
- spring mvc 上传文件
- 2015年互联网行业大事件:相爱相杀、掐架、残酷洗牌
- 关于Storm与JStorm的调度算法的讨论
- java程序如何调用mysql数据库的存储过程
- jstl标签
- char在扩展转型中的问题
- jquery ajax+spring mvc上传文件
- Android注解框架对比
- 多态、动态类型和动态绑定
- 【FFmpeg】FFmpeg常用基本命令
- WAV和PCM的关系和区别
- Codeforces 609C Load Balancing 【水题】
- 安卓QQ分享
- HTML+CSS
- 使用ViewFlipper实现公告播放