SpringMVC实现文件上传,直接上代码:
后台代码:
01 |
@RequestMapping(value = "/uploadApk") |
03 |
public Object uploadApk( |
04 |
@RequestParam(value = "apkFile") MultipartFile apkFile, |
05 |
HttpServletRequest request, HttpServletResponse response) { |
06 |
Map<String,Object> resMap = new HashMap<String,Object>(); |
07 |
if (apkFile != null) { |
09 |
String realPath = request.getSession().getServletContext() |
10 |
.getRealPath("/upload/apk"); |
11 |
if (apkFile.isEmpty()) { |
13 |
resMap.put("status", StatusConstants.STATUS_PARM_IS_EMPTY); |
16 |
String originFileName = apkFile.getOriginalFilename(); |
18 |
//这里使用Apache的FileUtils方法来进行保存 |
19 |
FileUtils.copyInputStreamToFile(apkFile.getInputStream(), |
20 |
new File(realPath, originFileName)); |
21 |
resMap.put("status",StatusConstants.STATUS_OK); |
22 |
} catch (IOException e) { |
23 |
System.out.println("文件上传失败"); |
24 |
resMap.put("status", StatusConstants.STATUS_EXECPTION); |
Spring配置文件中需要添加如下内容:
01 |
<!-- SpringMVC上传文件时,需配置MultipartResolver处理器 --> |
02 |
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> |
03 |
<!-- 指定所上传文件的总大小不能超过80M......注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> |
04 |
<property name="maxUploadSize" value="80000000"/> |
07 |
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException --> |
08 |
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> |
09 |
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> |
10 |
<property name="exceptionMappings"> |
12 |
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> |
13 |
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> |
jsp页面内容(这里结合的EasyUi的一些内容):
01 |
function ajaxFileUpload(){ |
03 |
var apkIntroduce = $("#apkInfo").val(); |
04 |
//开始上传文件时显示一个图片,文件上传完成将图片隐藏 |
05 |
//$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();}); |
06 |
//执行上传文件操作的函数,使用encodeURI方法,防止传输中文字符的时候出现乱码 |
07 |
var uploadUrl = encodeURI(encodeURI(basePath + "uploadApk.do?apkIntroduce="+apkIntroduce)); |
09 |
//处理文件上传操作的服务器端地址(可以传参数,已亲测可用) |
11 |
// url:basePath + "uploadApk.do?apkIntroduce="+apkIntroduce, |
12 |
secureuri:false, //是否启用安全提交,默认为false |
13 |
fileElementId:'apkFile', //文件选择框的id属性 |
14 |
dataType:'text', //服务器返回的格式,可以是json或xml等 |
15 |
success:function(data, status){ //服务器响应成功时的处理函数 |
16 |
data = data.replace("<PRE>", ''); //ajaxFileUpload会对服务器响应回来的text内容加上<pre>text</pre>前后缀 |
17 |
data = data.replace("</PRE>", ''); |
18 |
data = data.replace("<pre>", ''); |
19 |
data = data.replace("</pre>", ''); //本例中设定上传文件完毕后,服务端会返回给前台[0`filepath] |
22 |
var dataset = $.parseJSON(data); |
23 |
if(dataset.status == "ok"){ |
24 |
$('#result').html("Apk上传成功 |
26 |
$.messager.alert("提示","上传成功"); |
29 |
addApkWindow.window('close'); |
31 |
datagrid.datagrid('reload'); |
33 |
}else if ( dataset.status == "parm_is_empty"){ |
34 |
$('#result').html("没有选择APK!"); |
36 |
$('#result').html('Apk上传失败,请重试!!'); |
39 |
error:function(data, status, e){ //服务器响应失败时的处理函数 |
42 |
$('#result').html('APK上传失败,请重试!!'); |
Html页面代码:
01 |
<div id="addApkWindows"> |
04 |
<div id="result"></div> |
08 |
<textarea rows="2" cols="30" id="apkInfo"></textarea> |
12 |
<input type="file" id="apkFile" name="apkFile"/> |
14 |
<input type="button" value="上传" onclick="ajaxFileUpload()"/> |
上面的JSP代码中,使用到了JS中的encodeURI方法,这个的目的是为了防止在传递中文参数时的乱码问题,当然,如果只传文件的话,则没有必要使用encodeURI
- springmvc+ajax文件上传
环境:JDK6以上,这里我是用JDK8,mysql57,maven项目 框架环境:spring+springmvc+mybaits或spring+springmvc+mybatis plus 前端代码 ...
- 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },&qu ...
- AJAX文件上传实践与分析,带HTML5文件上传API。
对于HTML5已经支持AJAX文件上传了,但如果需要兼容的话还是得用一点小技巧的,HTML5等等介绍,先来看看以前我们是怎么写的. 网上可能会有一些叫AJAX文件上传插件,但在AJAX2.0之前是不可 ...
- 兼容ie的jquery ajax文件上传
Ajax文件上传插件很多,但兼容性各不一样,许多是对ie不兼容的,另外项目中是要求将网页内容嵌入到桌面端应用的,这样就不允许带flash的上传插件了,如:jquery uploadify...悲剧 对 ...
- jQuery插件AjaxFileUpload实现ajax文件上传
转自:http://www.cnblogs.com/linjiqin/p/3530848.html jQuery插件AjaxFileUpload用来实现ajax文件上传,该插件使用非常简单,接下来写个 ...
- ajax 文件上传,ajax
ajax 文件上传,ajax 啥也不说了,直接上代码! <input type="file" id="file" name="myfile&qu ...
- 转: 如何实现jQuery的Ajax文件上传
[PHP文件上传] 在开始之前,我觉得是有必要把通WEB上传文件的原理简单说一下的.实际上,在这里不管是PHP,JSP,还是ASP处理上传的文件,其实都是WEB早已把文件上传到服务器了,我们只是运用上 ...
- [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
原文 [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传 Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件 ...
- php+ajax文件上传
php+ajax文件上传 html: <input id="user_real_name" class="input_show" type="t ...
随机推荐
- CDOJ_844 程序设计竞赛
原题地址:http://acm.uestc.edu.cn/#/problem/show/844 "你动规无力,图论不稳,数据结构松散,贪心迟钝,没一样像样的,就你还想和我同台竞技,做你的美梦 ...
- org.dom4j.IllegalAddException: No such namespace prefix: *** is in scope on: org.dom4j.tree.DefaultElement (dom4j写入XML文件,标签中带【:】(冒号)解决办法)
用dom4j操作写XML文件,标签中含有冒号,会报 org.dom4j.IllegalAddException: No such namespace prefix: *** is in scope o ...
- 设计模式之装饰(Decorator)模式
设计模式之装饰(Decorator)模式 (一)什么是装饰(Decorator)模式 装饰模式,又称为包装模式,它以对客户端透明的方式扩张对象的功能,是继承关系的替代方案之一. 装饰模式可以在不使用创 ...
- linux批量解压和批量压缩
ls *.tar.gz | xargs -n1 tar xzvf //批量解压 ls | awk '{ print "tar zcvf "$0".tar.gz " ...
- 【转载】java sleep和wait的区别的疑惑?
首先,要记住这个差别,"sleep是Thread类的方法,wait是Object类中定义的方法".尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的. Thread.sle ...
- Task C# 多线程和异步模型 TPL模型 【C#】43. TPL基础——Task初步 22 C# 第十八章 TPL 并行编程 TPL 和传统 .NET 异步编程一 Task.Delay() 和 Thread.Sleep() 区别
Task C# 多线程和异步模型 TPL模型 Task,异步,多线程简单总结 1,如何把一个异步封装为Task异步 Task.Factory.FromAsync 对老的一些异步模型封装为Task ...
- onedrive实现excel在线编辑 online excel
1.首先用火狐浏览器或者谷歌浏览器登录 https://onedrive.live.com 2.注冊邮箱账户信息 3.在邮箱激活账户信息 4.登录进去.点击我的账户,点击左側文件树.点选上载,将文件上 ...
- yii第三方插件snoopy配置
首先.把snoopy类放到protected\extensions\snoopy\目录下. 其次.在yii配置文件main.php里配置import扩展进来. 'import'=>array( ...
- Mmseg中文分词算法解析
Mmseg中文分词算法解析 @author linjiexing 开发中文搜索和中文词库语义自己主动识别的时候,我採用都是基于mmseg中文分词算法开发的Jcseg开源project.使用场景涉及搜索 ...
- Intel的东进与ARM的西征(4)--理想的星空,苹果处理器之野望
http://www.36kr.com/p/200031.html “人生五十年,如梦亦如幻.有生斯有死,壮士何所憾?”之所以没有遗憾,是因为有了理想. 公元 1582 年,日本战国时期最著名的霸主, ...