生活随笔
收集整理的這篇文章主要介紹了
利用commons-fileupload 上传图片(包含表单数据)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在一個表單中包含普通文本數(shù)據(jù),另外還有需要上傳的圖片,那么本程序?qū)D片保存到服務(wù)器上的一個圖片目錄中,文本數(shù)據(jù)則獲取然后輸出,查看傳輸是否正確,后面的處理為涉及。
上傳的jsp頁面:
最后將信息輸出:(圖片已經(jīng)保存在特定目錄中)
需要用到的兩個jar包,commons-fileupload-1.2.2.jar ?commons-io.jar
jsp頁面:
[html] view plaincopy
<%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>??<%??String?path?=?request.getContextPath();??String?basePath?=?request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";??%>????<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??<html>????<head>??????<base?href="<%=basePath%>">????????????<title>My?JSP?'index.jsp'?starting?page</title>??????<meta?http-equiv="pragma"?content="no-cache">??????<meta?http-equiv="cache-control"?content="no-cache">??????<meta?http-equiv="expires"?content="0">??????????<meta?http-equiv="keywords"?content="keyword1,keyword2,keyword3">??????<meta?http-equiv="description"?content="This?is?my?page">????????????</head>????????<body>??????<form?id="form5"?method="post"?enctype="multipart/form-data"?<strong>?</strong>?action="ReceiveFile"?>???????????<table?class="rounded-corner?menu1"?id="table_menu5"?border="1px?solid">??????????<thead?align="center">??????????????<tr>??????????????????<th>顯示名稱?</th>??????????????????<th>鏈接地址</th>??????????????</tr>??????????</thead>??????????<tbody?>??????????????<tr?class="odd"?>??????????????????<td?width="20%"?align="center"><input?value="中國青少年宮協(xié)會"?readonly="readonly"?name="input_value5"?class="menu5_input1"></td>??????????????????<td?width="50%"?align="center"><input?value="http://www.cnypa.org/"?readonly="readonly"?style="width:?500px;"?name="input_value5"></td>??????????????</tr>???????????????<tr?class="odd"?>??????????????????<td?width="20%"?align="center"><input?type="file"text"?value="瀏覽"?readonly="readonly"?name="input_value5"?class="menu5_input1"></td>??????????????????<td?width="50%"?align="center"><input?value=""??style="width:?500px;"?name="input_value5"></td>??????????????</tr>???????????????</tbody>??????????</table>????????<table?class="rounded-corner?menu1"?>??????????<tfoot?align="right">??????????<tr>??????????<td></td>??????????????<td>??????????????????<input?type="submit""?value="保存"?id="save5"??onclick="check5();">??????????????</td>??????????</tr>??????????</tfoot>??????</table>???????????????</form>????</body>??</html>??
servlet后臺程序
[java] view plaincopy
package?dai;??????import?java.io.File;??import?java.io.IOException;??import?java.util.ArrayList;??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.disk.DiskFileItemFactory;??import?org.apache.commons.fileupload.servlet.ServletFileUpload;????public?class?ReceiveFile?extends?HttpServlet?{????????????private?String?uploadPath?=?"uploadpic/upload/";???????private?String?tempPath?=?"uploadpic/uploadtmp/";???????private?String?serverPath?=?null;???????private?String[]?fileType?=?new?String[]{".jpg",".gif",".bmp",".png",".jpeg",".ico"};??????private?int?sizeMax?=?5;????????????@Override??????protected?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)??????????????throws?ServletException,?IOException?{????????????????????String?serverPath?=?getServletContext().getRealPath("/").replace("\\",?"/");????????????????????????if(!new?File(serverPath+uploadPath).isDirectory()){???????????????new?File(serverPath+uploadPath).mkdirs();????????????}????????????if(!new?File(serverPath+tempPath).isDirectory()){??????????????new?File(serverPath+tempPath).mkdirs();??????????}???????????DiskFileItemFactory?factory?=?new?DiskFileItemFactory();??????????factory.setSizeThreshold(5*1024);???????????factory.setRepository(new?File(serverPath+tempPath));??????????????????????ServletFileUpload?upload?=?new?ServletFileUpload(factory);??????????upload.setSizeMax(sizeMax*1024*1024);??????????????????????String?filePath?=?null;????????????try?{????????????????List<FileItem>?items?=?upload.parseRequest(request);????????????????????????????for?(int?i=0;i<items.size();i++)?{????????????????????????????????????FileItem?item?=?items.get(i);??<span?style="white-space:pre">??</span>??????????if(!item.isFormField()){??????????????????????String?fileName?=?item.getName().toLowerCase();??????????????????????if(fileName.endsWith(fileType[0])||fileName.endsWith(fileType[1])||fileName.endsWith(fileType[2])||fileName.endsWith(fileType[3])||fileName.endsWith(fileType[4])||fileName.endsWith(fileType[5])){??????????????????????????????filePath?=?serverPath+uploadPath+fileName;????????????????????????????File?file?=?new?File(filePath);??????????????????????????item.write(file);??????????????????????????System.out.println(fileName);???????????????????????}else?{??????????????????????????request.setAttribute("errorMsg",?"上傳失敗,請確認(rèn)上傳的文件存在并且類型是圖片!");??????????????????????????request.getRequestDispatcher("uploaderror.jsp").forward(request,response);???????????????????????}??????????????????}else?{??????????????????????????????????????????String?value=item.getString();??????????????????????value?=?new?String(value.getBytes("ISO-8859-1"),"UTF-8");????????????????????????System.out.println(value);??????????????????}????????????????????????????????}???????????}?catch?(Exception?e)?{??????????????e.printStackTrace();????????????????request.setAttribute("errorMsg",?"上傳失敗,請確認(rèn)上傳的文件存在并且類型是圖片!");??????????????request.getRequestDispatcher("uploaderror.jsp").forward(request,response);???????????}??????}????????????@Override??????protected?void?doGet(HttpServletRequest?req,?HttpServletResponse?resp)??????????????throws?ServletException,?IOException?{??????????this.doPost(req,?resp);??????}??}??
另外,文章中有幾個注意點,像form表單的enctype="multipart/form-data" 需要注意,然后后臺處理的時候需要將文件和普通文本數(shù)據(jù)分開處理,先說的大概,詳細(xì)的下次再來編輯,源碼的話我上傳到這里:http://download.csdn.net/detail/xiaobaismiley/6333407
總結(jié)
以上是生活随笔為你收集整理的利用commons-fileupload 上传图片(包含表单数据)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。