Servlet doPost方法同時上傳圖片和傳遞參數

上傳圖片和傳遞參數
上傳圖片和文件屬於enctype="multipart/form-data" 
form中加入enctype="multipart/form-data"時整個表單被封裝,字符將轉成二進制流,因此request.getParameter("user_type")是得不到值的:
默認情況,傳遞參數編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form- data,才能完整的傳遞文件數據,

同時上傳文件與圖片
要解析二進制流來得到文本參數
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
} // 解析request請求
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {  // 如果是表單域 ,就是非文件上傳元素
String name = item.getFieldName(); // 獲取name屬性的值
String value = item.getString(); // 獲取value屬性的值
if (item.getFieldName().equals("intro")) {
System.out.println(value+"yeah");
}
} else {
String fieldName = item.getFieldName(); // 文件域中name屬性的值
String fileName = item.getName(); // 文件的全路徑,絕對路徑名加文件名
String contentType = item.getContentType(); // 文件的類型
long size = item.getSize(); // 文件的大小,以字節爲單位
File saveFile = new File("D:/test.jpg"); // 定義一個file指向一個具體的文件
try {
item.write(saveFile);// 把上傳的內容寫到一個文件中
} catch (Exception e) {
e.printStackTrace();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章