Java實作模拟QQ空間圖檔上傳
首先看效果:
<a href="http://s3.51cto.com/wyfs02/M01/59/1A/wKiom1THSHrCYEWgAAC5b4AS8iQ808.jpg" target="_blank"></a>
首先編寫我們的上傳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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<code><%@ page language="java" contentType="text/html; charset=UTF-8"</code>
<code> </code><code>pageEncoding="UTF-8"%></code>
<code><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></code>
<code><</code><code>html</code><code>></code>
<code><</code><code>head</code><code>></code>
<code><</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=UTF-8"</code><code>></code>
<code><</code><code>title</code><code>>Java實作開發QQ空間上傳</</code><code>title</code><code>></code>
<code><</code><code>style</code> <code>type</code><code>=</code><code>"text/css"</code><code>></code>
<code>body{background: url("image/bg_webp.jpg");}</code>
<code>*{padding: 0px;margin: 0px;}</code>
<code>.qq{width: 520px;height: 70px;margin: 200px auto;border: 1px solid #e6e6e6;background-color: #fff}</code>
<code>.qq .qq_pic{float: right;width: 48px;height: 70px;border-left: 1px solid #eee8d1;background-color: #fafafa;border-right: 1px solid #eee8d1 }</code>
<code>.qq .qq_pic .bg_button{width: 48px;height: 70px;display: block;padding: 20px 0px 0px 10px}</code>
<code>.qq .qq_pic .bg_button:HOVER{background-color: #fff;height: 50px;width: 38px;}</code>
<code>.qq .qq_pic .bg_button i{background: url("image/bg_button.png");background-position: -490px -125px;width: 25px;height: 25px;display: block;}</code>
<code>.qq .qq_pic input{display: none;}</code>
<code></</code><code>style</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code> </code>
<code> </code><code><</code><code>form</code> <code>action="<%=request.getContextPath()%>/UploadQQServlet" enctype="multipart/form-data" method="post" id="saveForm"></code>
<code> </code><code><</code><code>div</code> <code>class</code><code>=</code><code>"qq"</code><code>></code>
<code> </code><code><</code><code>div</code> <code>class</code><code>=</code><code>"qq_pic"</code><code>></code>
<code> </code><code><</code><code>a</code> <code>href</code><code>=</code><code>"#"</code> <code>class</code><code>=</code><code>"bg_button"</code> <code>onclick</code><code>=</code><code>"openBrowser()"</code><code>></code>
<code> </code><code><</code><code>i</code><code>></</code><code>i</code><code>></code>
<code> </code><code></</code><code>a</code><code>> </code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>"file"</code> <code>id</code><code>=</code><code>"fileName_upload"</code> <code>name</code><code>=</code><code>"file1"</code> <code>onchange</code><code>=</code><code>"saveFile()"</code><code>> </code>
<code> </code><code></</code><code>div</code><code>></code>
<code> </code><code></</code><code>div</code><code>></code>
<code> </code><code></</code><code>form</code><code>></code>
<code> </code><code><</code><code>div</code><code>></code>
<code> </code><code><</code><code>img</code> <code>alt</code><code>=</code><code>"圖檔預覽"</code> <code>src</code><code>=</code><code>"upload/${fileName}"</code> <code>style</code><code>=</code><code>"height: 30px;width: 30px;"</code><code>></code>
<code> </code><code></</code><code>div</code><code>></code>
<code><</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>></code>
<code> </code><code>function openBrowser(){</code>
<code> </code><code>var boolean=navigator.appName=="Microsoft Internet Explorer"?true:false;</code>
<code> </code><code>if(boolean){</code>
<code> </code><code>document.getElementById("fileName_upload").click();</code>
<code> </code><code>}else{</code>
<code> </code><code>var a=document.createEvent("MouseEvents");</code>
<code> </code><code>a.initEvent("click",true,true);</code>
<code> </code><code>document.getElementById("fileName_upload").dispatchEvent(a);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>function saveFile(){</code>
<code> </code><code>document.getElementById("saveForm").submit();</code>
<code></</code><code>script</code><code>></code>
<code></</code><code>body</code><code>></code>
<code></</code><code>html</code><code>></code>
然後編寫我們的背景代碼,這裡我就簡單使用Servlet
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<code>package</code> <code>com.wonders.upload;</code>
<code>import</code> <code>java.io.File;</code>
<code>import</code> <code>java.io.IOException;</code>
<code>import</code> <code>java.util.Iterator;</code>
<code>import</code> <code>java.util.List;</code>
<code>import</code> <code>java.util.UUID;</code>
<code>import</code> <code>javax.servlet.ServletException;</code>
<code>import</code> <code>javax.servlet.http.HttpServlet;</code>
<code>import</code> <code>javax.servlet.http.HttpServletRequest;</code>
<code>import</code> <code>javax.servlet.http.HttpServletResponse;</code>
<code>import</code> <code>org.apache.commons.fileupload.FileItem;</code>
<code>import</code> <code>org.apache.commons.fileupload.FileItemFactory;</code>
<code>import</code> <code>org.apache.commons.fileupload.FileUploadException;</code>
<code>import</code> <code>org.apache.commons.fileupload.disk.DiskFileItemFactory;</code>
<code>import</code> <code>org.apache.commons.fileupload.servlet.ServletFileUpload;</code>
<code>public</code> <code>class</code> <code>UploadQQServlet </code><code>extends</code> <code>HttpServlet {</code>
<code> </code><code>public</code> <code>void</code> <code>doGet(HttpServletRequest request, HttpServletResponse response)</code>
<code> </code><code>throws</code> <code>ServletException, IOException {</code>
<code> </code>
<code> </code><code>doPost(request, response);</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>doPost(HttpServletRequest request, HttpServletResponse response)</code>
<code> </code><code>request.setCharacterEncoding(</code><code>"utf-8"</code><code>);</code>
<code> </code><code>response.setCharacterEncoding(</code><code>"utf-8"</code><code>);</code>
<code> </code><code>//擷取檔案路徑</code>
<code> </code><code>String strPath=request.getRealPath(</code><code>"/"</code><code>)+</code><code>"/upload"</code><code>;</code>
<code> </code><code>File file =</code><code>new</code> <code>File(strPath);</code>
<code> </code><code>if</code><code>(!file.exists())file.mkdirs();</code>
<code> </code><code>FileItemFactory factory=</code><code>new</code> <code>DiskFileItemFactory();</code>
<code> </code><code>ServletFileUpload upload=</code><code>new</code> <code>ServletFileUpload(factory);</code>
<code> </code><code>//從請求對象中擷取檔案資訊</code>
<code> </code><code>List items;</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>items = upload.parseRequest(request);</code>
<code> </code><code>if</code><code>(items!=</code><code>null</code><code>){</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i=</code><code>0</code><code>;i<items.size();i++){</code>
<code> </code><code>Iterator iterator=items.iterator();</code>
<code> </code><code>while</code><code>(iterator.hasNext()){</code>
<code> </code><code>FileItem item=(FileItem)iterator.next();</code>
<code> </code><code>if</code><code>(item.isFormField()){</code>
<code> </code><code>continue</code><code>;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>String fileName=item.getName();</code>
<code> </code><code>Long fileSize=item.getSize();</code>
<code> </code><code>int</code> <code>pos=fileName.indexOf(</code><code>"."</code><code>);</code>
<code> </code><code>String ext=fileName.substring(pos,fileName.length()); </code>
<code> </code><code>fileName=UUID.randomUUID().toString()+ext;</code>
<code> </code><code>request.getSession().setAttribute(</code><code>"fileName"</code><code>, fileName);</code>
<code> </code><code>File saveFile=</code><code>new</code> <code>File(strPath,fileName);</code>
<code> </code><code>item.write(saveFile);</code>
<code> </code><code>response.sendRedirect(</code><code>"UploadQQ.jsp"</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>} </code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code>}</code>
ok,基本完成,此代碼練手而用!
本文轉自 小夜的傳說 51CTO部落格,原文連結:http://blog.51cto.com/1936625305/1608855,如需轉載請自行聯系原作者