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 ...
随机推荐
- hdu 4885 (n^2*log(n)判断三点共线建图)+最短路
题意:车从起点出发,每次只能行驶L长度,必需加油到满,每次只能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 开始时候直接建图,在范围内就有边1.跑最短了,再读题后发现,若几 ...
- OC-Runtime温故知新
每个java应用程序都有一个runtime类实例,使应用程序能够与其运行的环境相连接.可以通过getRuntime 方法获取当前运行时,应用程序不能自己创建runtime类实例.Runtime 没有构 ...
- 使用nginx时,让web取得原始请求地址
问题描述 当使用nginx配置proxy_pass参数以后,后端web取得的Request.Uri是proxy_pass中配置的地址,而不是client访问的原始地址 举例说明: 假设nginx配置文 ...
- Codeforces 837D Round Subset(背包)
题目链接 Round Subset 题意 在n个数中选择k个数,求这k个数乘积末尾0个数的最大值. 首先我们预处理出每个数5的因子个数c[i]和2的因子个数d[i] 然后就可以背包了. 设f[i] ...
- P1111 修复公路 洛谷
https://www.luogu.org/problem/show?pid=1111 题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地 ...
- CODEVS_1227 方格取数2 网络流 最小费用流 拆点
原题链接:http://codevs.cn/problem/1227/ 题目描述 Description 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1, ...
- Spring MVC集成Spring Data Reids和Spring Session实现Session共享
说明:Spring MVC中集成Spring Data Redis和Spring Session时版本是一个坑点,比如最新版本的Spring Data Redis已经不包含Jedis了,需要自行引入. ...
- C#使用PrintDocument打印 多页 打印预览
PrintDocument实例所有的订阅事件如下: 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDocument docToPrint ...
- Oracle 12c agent install for linux
安装Agent代理 在EM11g时,agent安装是通过在被监制主机端下载agent代理并安装,在EM12c版本号上,能够在EM12c服务端.通过"推送"的方式把agent代理在远 ...
- iOS开发之计算两个日期的时间间隔
//首先创建格式化对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDate ...