enctype="multipart/form-data"導致text表單項失效的問題
阿新 • • 發佈:2018-12-17
為了上傳檔案表單項,在form表單項上設定屬性enctype="multipart/form-data"導致text表單項無法傳值
原因:
表單中enctype=”multipart/form-data”的意思,是設定表單的MIME編碼。預設情況,這個編碼格式是application/x-www-form-urlencoded,不能用於檔案上傳;只有使用了multipart/form- data,才能完整的傳遞檔案資料,進行下面的操作.這時候這時如果用request是無法直接獲取到相應表單的值的
解決方法:
1:設定form表單項屬性為enctype=\”multipart/form-data\”
2:利用pareRequest解析
public void execute1(HttpServletRequest request) throws IOException { DiskFileItemFactory factroy = new DiskFileItemFactory(); //建立檔案上傳解析器 ServletFileUpload upload = new ServletFileUpload(factroy); //使用解析器解析上傳的表單資料,每個FileItem對應一個表單項 List<FileItem> fileItemList = upload.parseRequest(request); for (FileItem fileItem : fileItemList) { if (!fileItem.isFormField()) { //不是普通的表單項,即是上傳的是檔案 //獲取檔名稱 String fileName = fileItem.getNname(); ... .. .} else{ /** * 獲取表單中的非檔案值 */ //表單中的空間name值 System.out.println(fileItem.getFieldName()); //該name值空間中的value值 System.out.println(fileItem.getString("UTF-8")); }