前端JSP:
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
|
<script
type= "text/javascript" > $( function ()
{ $( "#upload_org_code" ).uploadify({ 'height' :
27, 'width' :
80, 'buttonText' : '选择图片' , 'swf' : '${pageContext.request.contextPath}/js/uploadify/uploadify.swf' , 'uploader' : '${pageContext.request.contextPath}/uploadIMGSerlet' , 'auto' : true , 'multi' : false , 'removeCompleted' : false , 'cancelImg' : '${pageContext.request.contextPath}/js/uploadify/uploadify-cancel.png' , 'fileTypeExts' : '*.jpg;*.jpge;*.gif;*.png' , 'fileSizeLimit' : '2MB' , 'onUploadSuccess' : function (file,data,response){ $( '#' +
file.id).find( '.data' ).html( '' ); $( "#upload_org_code_name" ).val(data); $( "#upload_org_code_img" ).attr( "src" , "${pageContext.request.contextPath}/getImg?file=" +data); $( "#upload_org_code_img" ).show(); }, //加上此句会重写onSelectError方法【需要重写的事件】 'overrideEvents' :
[ 'onSelectError' , 'onDialogClose' ], //返回一个错误,选择文件的时候触发 'onSelectError' : function (file,
errorCode, errorMsg){ switch (errorCode)
{ case -110: alert( "文件
[" +file.name+ "]
大小超出系统限制的" +
jQuery( '#upload_org_code' ).uploadify( 'settings' , 'fileSizeLimit' )
+ "大小!" ); break ; case -120: alert( "文件
[" +file.name+ "]
大小异常!" ); break ; case -130: alert( "文件
[" +file.name+ "]
类型不正确!" ); break ; } }, }); </script> |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
< tr > < td align="right">< font style="color:
red;">*</ font >组织代码机构:</ td > < td > < table > < tr > < td width="45%">< input type="file"
name="upload_org_code" id="upload_org_code"/></ td > < td >< img style="display:
none" id="upload_org_code_img" src="" width="150" height="150"></ td > </ tr > </ table > < input type="hidden"
name="upload_org_code_name" id="upload_org_code_name" /> < hr > </ td > </ tr > |
后端servlet:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
package com.mybank.enterprise.framework.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.mybank.enterprise.util.Constant; import com.mybank.enterprise.util.StringUtil; public class UploadIMGSerlet extends HttpServlet
{ private static final long serialVersionUID
= 1L; //
上传文件的保存路径 private String
configPath = Constant.RB.getString( "img_path" ); //
临时文件路径 private String
dirTemp = "resource/temp/" ; public void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException,
IOException { this .doPost(request,
response); } public void doPost(HttpServletRequest
request, HttpServletResponse response) throws ServletException,
IOException { String
ret_fileName = null ; //返回给前端已修改的图片名称 request.setCharacterEncoding( "UTF-8" ); response.setContentType( "text/html;
charset=UTF-8" ); PrintWriter
out = response.getWriter(); //
文件保存目录路径 String
savePath = configPath; //
临时文件目录 String
tempPath = this .getServletContext().getRealPath( "/" )
+ dirTemp; //
创建文件夹 File
dirFile = new File(savePath); if (!dirFile.exists())
{ dirFile.mkdirs(); } //
创建临时文件夹 File
dirTempFile = new File(tempPath); if (!dirTempFile.exists())
{ dirTempFile.mkdirs(); } DiskFileItemFactory
factory = new DiskFileItemFactory(); factory.setSizeThreshold( 20 * 1024 * 1024 ); //
设定使用内存超过5M时,将产生临时文件并存储于临时目录中。 factory.setRepository( new File(tempPath)); //
设定存储临时文件的目录。 ServletFileUpload
upload = new ServletFileUpload(factory); upload.setHeaderEncoding( "UTF-8" ); try { List<?>
items = upload.parseRequest(request); Iterator<?>
itr = items.iterator(); while (itr.hasNext())
{ FileItem
item = (FileItem) itr.next(); String
fileName = item.getName(); if (fileName!= null ){ String
endstr = fileName.substring(fileName.indexOf( "." ),fileName.length()); fileName
= StringUtil.createSerial20().concat(endstr); ret_fileName
= fileName; } if (!item.isFormField())
{ try { File
uploadedFile = new File(savePath,fileName); OutputStream
os = new FileOutputStream(uploadedFile); InputStream
is = item.getInputStream(); byte buf[]
= new byte [ 1024 ]; //
可以修改 1024 以提高读取速度 int length
= 0 ; while ((length
= is.read(buf)) > 0 )
{ os.write(buf, 0 ,
length); } //
关闭流 os.flush(); os.close(); is.close(); } catch (Exception
e) { e.printStackTrace(); } } } } catch (FileUploadException
e) { e.printStackTrace(); } //将已修改的图片名称返回前端 out.print(ret_fileName); out.flush(); out.close(); } } |
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
|
package com.mybank.enterprise.framework.servlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mybank.enterprise.util.Constant; public class GetIMGServlet extends HttpServlet
{ private static final long serialVersionUID
= 2761789171087122738L; public void doGet(HttpServletRequest
req, HttpServletResponse resp) throws ServletException,
IOException { this .doPost(req,
resp); } @Override protected void doPost(HttpServletRequest
req, HttpServletResponse resp) throws ServletException,
IOException { String
file = req.getParameter( "file" ); File
pic = new File(Constant.RB.getString( "img_path" )+file); FileInputStream
fis = new FileInputStream(pic); OutputStream
os = resp.getOutputStream(); try { int count
= 0 ; byte []
buffer = new byte [ 1024 * 1024 ]; while ((count
= fis.read(buffer)) != - 1 ) os.write(buffer, 0 ,
count); os.flush(); } catch (IOException
e) { e.printStackTrace(); } finally { if (os
!= null ) os.close(); if (fis
!= null ) fis.close(); } } } |