采用springmvc架構,隻貼出關鍵代碼,其他一概論之。
上傳:
jsp頁面
<code><form action=</code><code>"${pageContext.request.contextPath}/UploadHandleServlet"</code> <code>method=</code><code>"post"</code> <code>enctype=</code><code>"multipart/form-data"</code><code>></code>
<code> </code><code>上傳使用者x:<input type=</code><code>"text"</code> <code>name=</code><code>"username"</code><code>><br/></code>
<code> </code><code>上傳檔案1:<input type=</code><code>"file"</code> <code>name=</code><code>"file1"</code><code>><br/></code>
<code> </code><code><input type=</code><code>"submit"</code> <code>value=</code><code>"送出"</code><code>></code>
<code> </code><code></form></code>
背景代碼
<code>SimpleDateFormat sdf1 = </code><code>new</code> <code>SimpleDateFormat(</code><code>"yyyyMMddHHmmss"</code><code>);</code>
<code>String savePath =request.getSession().getServletContext().getRealPath(</code><code>"/WEB-INF/upload"</code><code>);</code>
<code> </code><code>File file = </code><code>new</code> <code>File(savePath);</code>
<code> </code><code>if</code> <code>(!file.exists()) {</code>
<code> </code><code>file.mkdir();</code>
<code> </code><code>}</code>
<code> </code><code>String message =</code><code>""</code><code>;</code>
<code> </code><code>try</code><code>{</code>
<code> </code><code>DiskFileItemFactory factory = </code><code>new</code> <code>DiskFileItemFactory();</code>
<code> </code><code>factory.setSizeThreshold(</code><code>1024</code><code>*</code><code>100</code><code>); </code>
<code> </code><code>factory.setRepository(file);</code>
<code> </code>
<code> </code><code>ServletFileUpload upload = </code><code>new</code> <code>ServletFileUpload(factory);</code>
<code> </code><code>upload.setHeaderEncoding(</code><code>"UTF-8"</code><code>); </code>
<code> </code><code>List<FileItem> list = upload.parseRequest(request);</code>
<code> </code>
<code>//正則比對,過濾路徑取檔案名 </code>
<code> </code><code>String regExp = </code><code>".+\\\\(.+)$"</code><code>; </code>
<code> </code><code>Pattern p = Pattern.compile(regExp);</code>
<code> </code><code>String fileName=</code><code>""</code><code>;</code>
<code> </code><code>for</code><code>(FileItem item : list){</code>
<code> </code><code>if</code><code>(item.isFormField()){</code>
<code> </code><code>String name = item.getFieldName();</code>
<code> </code><code>String value = item.getString(</code><code>"UTF-8"</code><code>);</code>
<code> </code><code>System.out.println(name + </code><code>"="</code> <code>+ value);</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>String name = item.getName(); </code>
<code> </code><code>name = name.substring(name.lastIndexOf(</code><code>"\\"</code><code>)+</code><code>1</code><code>);</code>
<code> </code><code>fileName = savePath+</code><code>"/"</code><code>+ sdf1.format(</code><code>new</code> <code>Date()) + </code><code>"_"</code><code>+name; </code>
<code> </code><code>item.write(</code><code>new</code> <code>File(fileName)); </code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>message = </code><code>"檔案上傳成功!"</code><code>;</code>
<code> </code><code>}</code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>message= </code><code>"檔案上傳失敗!"</code><code>;</code>
<code> </code><code>e.printStackTrace();</code>
<code>}</code>
檔案下載下傳
<code>//獲得檔案名和檔案路徑</code>
<code>String name = map.get(</code><code>"name"</code><code>)+</code><code>""</code><code>;</code>
<code>String path = map.get(</code><code>"path"</code><code>)+</code><code>""</code><code>;</code>
<code>String filename= </code><code>new</code> <code>String(name.getBytes(</code><code>"utf-8"</code><code>),</code><code>"iso8859-1"</code><code>);</code>
<code>File file = </code><code>new</code> <code>File(path);</code>
<code>InputStream fis = </code><code>new</code> <code>BufferedInputStream(</code><code>new</code> <code>FileInputStream(path));</code>
<code>byte</code><code>[] buffer = </code><code>new</code> <code>byte</code><code>[fis.available()];</code>
<code>fis.read(buffer);</code>
<code>fis.close();</code>
<code>response.reset();</code>
<code>response.addHeader(</code><code>"Content-Disposition"</code><code>, </code><code>"attachment;filename="</code> <code>+ </code><code>new</code> <code>String(name.replaceAll(</code><code>" "</code><code>, </code><code>""</code><code>).getBytes(</code><code>"utf-8"</code><code>),</code><code>"iso8859-1"</code><code>));</code>
<code>response.addHeader(</code><code>"Content-Length"</code><code>, </code><code>""</code> <code>+ file.length());</code>
<code>OutputStream os = </code><code>new</code> <code>BufferedOutputStream(response.getOutputStream());</code>
<code>response.setContentType(</code><code>"application/octet-stream"</code><code>);</code>
<code>os.write(buffer);</code><code>// 輸出檔案</code>
<code>os.flush();</code>
<code>os.close();</code>
本文轉自布拉君君 51CTO部落格,原文連結:http://blog.51cto.com/5148737/1774535,如需轉載請自行聯系原作者