整理文档,搜刮出一个SpringMvc MultipartFile实现图片文件上传示例,稍微整理精简一下做下分享。
spring-servlet.xml
1
2
3
4
5
6
7
|
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> < bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > < property name = "defaultEncoding" value = "UTF-8" /> <!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> < property name = "maxUploadSize" value = "10240000" /> </ bean > |
upload/index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8" %> <!DOCTYPE HTML> <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" > <title>单图片上传</title> </head> <body> <fieldset> <legend>图片上传</legend> <h2>只能上传单张10M以下的 PNG、JPG、GIF 格式的图片</h2> <form action= "/shop/auth/photoUpload" method= "post" enctype= "multipart/form-data" > 选择文件:<input type= "file" name= "file" > <input type= "submit" value= "上传" > </form> </fieldset> </body> </html> |
或者使用ExtJs
js/user/photoUpload.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Ext.onReady( function (){ Ext.create( 'Ext.form.Panel' , { title: '图片上传' , width: 600, bodyPadding: 10, frame: true , renderTo: Ext.getBody(), items: [{ xtype: 'filefield' , name: 'file' , fieldLabel: 'Photo' , labelWidth: 50, msgTarget: 'side' , fileUpload: true , allowBlank: false , blankText: "Select an image" , emptyText: 'You can only upload a single PNG 10M or less, JPG, GIF format images' , anchor: '100%' , buttonText: '选择图片' }], buttons: [{ text: '上传' , handler: function () { var form = this .up( 'form' ).getForm(); if (form.isValid()){ form.submit({ url: '/shop/auth/photoUpload' , waitMsg: '正在上传图片...' , success: function (fp, o) { Ext.Msg.alert( '提示' , o.result.msg); } }); } } }] }); }); |
pages/user/photoUpload.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >图片上传</ title > </ head > < link href = "../../ext-4.2.1.883/resources/css/ext-all.css" rel = "external nofollow" rel = "stylesheet" type = "text/css" /> < script type = "text/javascript" src = "../../ext-4.2.1.883/ext-all.js" ></ script > < script src = "../../js/user/photoUpload.js" type = "text/javascript" ></ script > < body > </ body > </ html > |
AuthController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/** * 图片文件上传 */ @ResponseBody @RequestMapping (value = "/photoUpload" ,method = RequestMethod.POST) public ResultData<Object> photoUpload(MultipartFile file,HttpServletRequest request,HttpServletResponse response,HttpSession session) throws IllegalStateException, IOException{ ResultData<Object> resultData= new ResultData<>(); // 判断用户是否登录 /*User user=(User) session.getAttribute("user"); if (user==null) { resultData.setCode(40029); resultData.setMsg("用户未登录"); return resultData; }*/ if (file!=null) {// 判断上传的文件是否为空 String path=null;// 文件路径 String type=null;// 文件类型 String fileName=file.getOriginalFilename();// 文件原名称 System.out.println("上传的文件原名称:"+fileName); // 判断文件类型 type=fileName.indexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null; if (type!=null) {// 判断文件类型是否为空 if ("GIF".equals(type.toUpperCase())||"PNG".equals(type.toUpperCase())||"JPG".equals(type.toUpperCase())) { // 项目在容器中实际发布运行的根路径 String realPath=request.getSession().getServletContext().getRealPath("/"); // 自定义的文件名称 String trueFileName=String.valueOf(System.currentTimeMillis())+fileName; // 设置存放图片文件的路径 path=realPath+/*System.getProperty("file.separator")+*/ trueFileName; System.out.println( "存放图片文件的路径:" +path); // 转存文件到指定的路径 file.transferTo( new File(path)); System.out.println( "文件成功上传到指定目录下" ); } else { System.out.println( "不是我们想要的文件类型,请按要求重新上传" ); return null ; } } else { System.out.println( "文件类型为空" ); return null ; } } else { System.out.println( "没有找到相对应的文件" ); return null ; } return resultData; } |
ResultData.java 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
public class ResultData<T> { private T data; private int code = 200 ; private String msg; private Boolean success = true ; public Boolean getSuccess() { return success; } public void setSuccess(Boolean success) { this .success = success; } public T getData() { return data; } public void setData(T data) { this .data = data; } public int getCode() { return code; } public void setCode( int code) { if ( 200 != code){ success = false ; } this .code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this .msg = msg; } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/LEARN4J/p/5426980.html