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 ...
随机推荐
- 关于MySQL存储过程异常处理的一点心得
DROP PROCEDURE IF EXISTS `SP_MODEL`; DELIMITER ;;CREATE PROCEDURE `SP_MODEL`(IN V_TYPE INT)BEGIN /** ...
- 洛谷——P2074 危险区域
P2074 危险区域 题目背景 一个恐怖组织在一座城市中安放了定时炸弹,其威力巨大,现在这里的警长想知道最坏的情况下会有多少街区受威胁. 题目描述 在一个城市有N*M个街区,每个街区由坐标描述,如图所 ...
- spark学习(五)总结及其demo
RDD及其特点 1.RDD是Spark的核心数据模型,但是个抽象类,全称为Resillient Distributed Dataset,即弹性分布式数据集. 2.RDD在抽象上来说是一种元素集合,包含 ...
- Chrome查看同步状态
最近Hosts不太稳定,翻出去之后安装了一些插件,那么会面临一些问题,比如插件是否已经同步成功,其它PC能否获取等等. 下面是一些查询同步状态的入口: https://www.google.com/s ...
- mysql 5.7版本目录无data文件夹的解决办法
安装mysql 5.7+版本时,若发现因根目录下,缺少data文件夹的情况, ***请不要去拷贝其他版本的data文件夹!*** 因为此操作会出现很多潜在问题:比如我遇到的执行show variabl ...
- 【Todo】Java类型转换总结
参考 http://www.cnblogs.com/lwbqqyumidi/p/3700164.html 这篇文章也可以对照着看:http://www.360doc.com/content/10/09 ...
- java中使用反射获取pojo(实体)类的全部字段值
说起反射.不得不说它实在是太强大了,通过反射就能够轻轻松松拿到各种东东,假设你想在项目中解除对某个类的依赖,能够考虑用反射. 今天跟大家分享的是通过java中的反射,获取pojo类的全部字段值. 为什 ...
- (转) Universal-Image-Loader使用大全(史上最屌)
转载自http://blog.csdn.net/zenjj11/article/details/38728481 项目介绍: Android上最让人头疼的莫过于从网络获取图片.显示.回收,不论什么一个 ...
- 赵雅智_SimpleCursorAdapter
项目步骤 声明listView控件并获取显示的视图 获取显示的数据 设置显示的adapter 注冊点击事件 详细案例 实现效果: watermark/2/text/aHR0cDovL2Jsb2cuY3 ...
- Java虚拟机平台无关性
jruby Java 虚拟机面试题全面解析(干货) - Yano_nankai的博客 - CSDN博客 http://m.blog.csdn.net/Yano_nankai/article/detai ...