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 ...
		 
		
	
随机推荐
	
									- SGU 分类
			
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...
			 
						- webstorm取消自动保存并标识修改的文件为星星标记
			
a.取消自动保存是去掉一下两个勾选. b.标记星星要勾选下面的选项. c.最终效果.
			 
						- poj 3461 hash解法
			
字符串hash https://blog.csdn.net/pengwill97/article/details/80879387 https://blog.csdn.net/chaiwenjun00 ...
			 
						- SQL入门随笔(上机实验报告)
			
<数据定义部分> 一.定义模式和删除模式 a.为用户定义一个模式学生—课程模式 S-T CREATE  SCHEMA  "S-T"  AUTHORIZATION USE ...
			 
						- Leetcode 数组问题2:买卖股票的最佳时机 II
			
问题描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易( ...
			 
						- BZOJ1016最小生成树计数 最小生成树 + 排列组合
			
@[最小生成樹, 排列組合] Discription 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的 最小生成树.(如果两颗最小生成树中至少有一条边不 ...
			 
						- 转  vs2010转vs2008 其他的一样
			
如果你使用VS2010的任何版本写代码,那么在VS2008中就不能打开VS2010的解决方案了,为此,通过以下三步就可以解决了一.对于工程名.sln; 1.用你喜欢的编辑器打开sln文件,比如note ...
			 
						- BUPT复试专题—科学计算器(2009)
			
题目描述 给你一个不带括号的表达式,这个表达式只包含加.减.乘.除,请求出这个表 达式的最后结果,最后结果一定是整数: 输入 一个数学表达式,只包括数字,数字保证是非负整数,以及五种运算符 " ...
			 
						- eclipse Kepler tomcat内存溢出解决方式
			
使用eclipse开发ssh项目,本机8G内存,可是在打开一个表格后再打开一个页面.立即就内存溢出,网上搜到下面解决方式,未解决: 1.改动eclipse.ini參数 -vmargs -Xms1024 ...
			 
						- palindrome-partitioning I&II——回文切割、深度遍历
			
I: Given a string s, partition s such that every substring of the partition is a palindrome. Return  ...