平时都是直接在action中按照struts2定义的格式来接流,最近看到华为技术人员调用struts2底层方法对文件流做了封装,感觉有用赶紧记了下来
Java代码
public void preExecute() { if (httpServletRequest instanceof MultiPartRequestWrapper) { MultiPartRequestWrapper requestWrapper = (MultiPartRequestWrapper) httpServletRequest; Enumeration<String> parameterNames = requestWrapper.getFileParameterNames(); while (parameterNames.hasMoreElements()) { @SuppressWarnings("unused") String paramterName = parameterNames.nextElement(); File[] files = requestWrapper.getFiles(paramterName); if (null == files || files.length == 0) { continue; } else if (files.length == 1) { FileBean fileBean = new FileBean(); fileBean.setAbsolutePath(files[0].getAbsolutePath()); fileBean.setFileSize(files[0].length()); fileBean.setFilename(requestWrapper.getFileNames(paramterName)[0]); this.fileMap.put(paramterName, fileBean); } else { ArrayList<FileBean> list = new ArrayList(); for (int i = 0; i < files.length; i++) { File file = files[i]; FileBean fileBean = new FileBean(); fileBean.setAbsolutePath(file.getAbsolutePath()); fileBean.setFileSize(file.length()); fileBean.setFilename(requestWrapper.getFileNames(paramterName)[i]); list.add(fileBean); } this.fileMap.put(paramterName, list); } } } }