整理文档,搜刮出一个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