資源簡介
Java中,當表單含有文件上傳時,提交數據的如何讀取(吐血版)親自測試版本。花了整整一天,主要針對enctype="multipart/form-data"form 提交的方式

代碼片段和文件信息
package?cn.izis.servlet;
import?java.io.File;
import?java.io.IOException;
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.jspsmart.upload.SmartUpload;
import?com.jspsmart.upload.SmartUploadException;
import?cn.izis.entity.Members;
import?cn.izis.service.TeamMembersService;
import?cn.izis.service.impl.TeamMembersServiceImpl;
public?class?UploadServlet?extends?HttpServlet?{
public?void?doGet(HttpServletRequest?request?HttpServletResponse?response)
throws?ServletException?IOException?{
response.setContentType(“text/html;charset=utf-8“);
response.setCharacterEncoding(“utf-8“);
request.setCharacterEncoding(“UTF-8“);
String?insertDB?=?““;
String?UserName?=?““;
String?Birthday?=?““;
String?IDCardNum?=?““;
String?Phone?=?““;
String?Level?=?““;
String?Rusume?=?““;
String?Summary?=?““;
String?Role?=?““;
String?Notes?=?““;
int?TeamId?=?0;
//?用于存放輸出的信息
String?message?=?““;
//?在自己的項目中構造出一個用于存放用戶照片的文件夾
String?projectpath?=?this.getServletContext().getRealPath(
“/headPhoto/“);
//?如果此文件夾不存在,則構造此文件夾
File?f?=?new?File(projectpath);
if?(!f.exists())?{
f.mkdir();
}
//?構造出文件工廠,用于存放JSP頁面中傳遞過來的文件
DiskFileItemFactory?factory?=?new?DiskFileItemFactory();
//?設置緩存大小,如果文件大于緩存大小時,則先把文件放到緩存中
factory.setSizeThreshold(4?*?1024);
//?設置上傳文件的保存路徑
factory.setRepository(f);
//?產生Servlet上傳對象
ServletFileUpload?upload?=?new?ServletFileUpload(factory);
//?設置可以上傳文件大小的上界4MB
upload.setSizeMax(4?*?1024?*?1024);
try?{
//?取得所有上傳文件的信息
List?list?=?upload.parseRequest(request);
Iterator?iter?=?list.iterator();
while?(iter.hasNext())?{
FileItem?item?=?iter.next();
//?如果接收到的參數不是一個普通表單(例text等)的元素,那么執行下面代碼
if?(!item.isFormField())?{
String?fieldName?=?item.getFieldName();//?獲得此表單元素的name屬性
String?fileName?=?item.getName();//?獲得文件的完整路徑
//?System.out.println(“1.1:“+fileName);
String?contentType?=?item.getContentType();//?獲得文件類型
long?fileSize?=?item.getSize();//?獲得文件大小
//?從文件的完整路徑中截取出文件名
fileName?=?fileName.substring(
fileName.lastIndexOf(“\\“)?+?1
fileName.length());
//?判斷是否有圖片上傳
if?(!(““.equals(fileName))?&&?!(fileName?==?null))?{
//?如果上傳的文件不是圖片,那么不上傳
String?allImgExt?=?“.jpg|.jpeg|.gif|.bmp|.png|“;
String?extName?=?fileName.substring(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6811??2015-03-24?16:51??新建文件夾\updateMembers.jsp
?????文件???????8081??2015-03-23?22:54??新建文件夾\UploadServlet.java
?????目錄??????????0??2015-03-25?11:01??新建文件夾
-----------?---------??----------?-----??----
????????????????14892????????????????????3
評論
共有 條評論