3、ACTION层代码的变动
由于加入了multipart/form-data标记,所以从request里面传递进来的其他参数死活拿不到。
所以自己从fileUpload里面的fileItems里面一个一个来取
写在ActionBase里面的基类方法
方法一,取到所有传递的参数的items
public List getFileItems(HttpServletRequest request) {
List fileItems = null;
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
// maximum size that will be stored in memory
// the location for saving data that is larger than getSizeThreshold()
FileUploadManager fileUploadManager = (FileUploadManager) getBean("fileUploadManager");
if (StringUtil.isNotBlank(fileUploadManager.getFileUploadTemp())) {
// 设置临时文件的存放目录D:\\repository,或者可以不设置,不设置应该是系统默认的一个目录
//该目录必须已经存在
factory.setRepository(new File(fileUploadManager
.getFileUploadTemp()));
}
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum size before a FileUploadException will be thrown
//上传文件的最大大小2,000,000,单位应该是byte,这里是2M
upload.setSizeMax(new Long(fileUploadManager.getFileUploadMax())
.longValue());
upload.setHeaderEncoding("UTF-8");
try {
fileItems = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
return fileItems;
}
方法二,从拿到的很多items中,得到对应的某个文本内容的值
public String getStringValue(HttpServletRequest request, String fieldName,
List fileItems) {
String fieldValue = "";
if (fileItems == null || fileItems.isEmpty()) {
return fieldValue;
}
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
if (fieldName.equalsIgnoreCase(item.getFieldName())) {
try {
fieldValue = item.getString("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
return fieldValue;
}
方法三,从拿到的所有items中,得到对应的type=file的二进制的内容
public DiskFileItem getFileItem(HttpServletRequest request,
String itemName, List fileItems) {
DiskFileItem fileItem = null;
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
fileItem = (DiskFileItem) iter.next();
if (fileItem.isFormField()) {
} else {
String name = fileItem.getFieldName();
long size = fileItem.getSize();
if (StringUtil.isBlank(name)
|| !itemName.equalsIgnoreCase(name) || size == 0) {
continue;
} else {
break;
}
}
}
return fileItem;
}