publicclassFileUploadInterceptorextendsAbstractInterceptor {public String intercept(ActionInvocation invocation) throws Exception {.......// bind allowed FilesEnumeration fileParameterNames &#61; multiWrapper.getFileParameterNames();while (fileParameterNames !&#61; null && fileParameterNames.hasMoreElements()) {// get the value of this input tag//获取文件的对应的属性名String inputName &#61; (String) fileParameterNames.nextElement();// get the content typeString[] contentType &#61; multiWrapper.getContentTypes(inputName);if (isNonEmpty(contentType)) {// get the name of the file from the input tagString[] fileName &#61; multiWrapper.getFileNames(inputName);if (isNonEmpty(fileName)) {// get a File object for the uploaded FileUploadedFile[] files &#61; multiWrapper.getFiles(inputName);if (files !&#61; null && files.length > 0) {List acceptedFiles &#61; new ArrayList<>(files.length);List acceptedContentTypes &#61; new ArrayList<>(files.length);List acceptedFileNames &#61; new ArrayList<>(files.length);//拼接文件的ContentType属性名String contentTypeName &#61; inputName &#43; "ContentType";//拼接文件名的属性名String fileNameName &#61; inputName &#43; "FileName";for (int index &#61; 0; index if (acceptFile(action, files[index], fileName[index], contentType[index], inputName, validation)) {acceptedFiles.add(files[index]);acceptedContentTypes.add(contentType[index]);acceptedFileNames.add(fileName[index]);}}if (!acceptedFiles.isEmpty()) {Map newParams &#61; new HashMap<>();//把文件添加到值栈中newParams.put(inputName, new Parameter.File(inputName, acceptedFiles.toArray(new UploadedFile[acceptedFiles.size()])));//把文件的ContentType添加到值栈中newParams.put(contentTypeName, new Parameter.File(contentTypeName, acceptedContentTypes.toArray(new String[acceptedContentTypes.size()])));//把文件名添加到值栈中newParams.put(fileNameName, new Parameter.File(fileNameName, acceptedFileNames.toArray(new String[acceptedFileNames.size()])));ac.getParameters().appendAll(newParams);}}} else {if (LOG.isWarnEnabled()) {LOG.warn(getTextMessage(action, "struts.messages.invalid.file", new String[]{inputName}));}}} else {if (LOG.isWarnEnabled()) {LOG.warn(getTextMessage(action, "struts.messages.invalid.content.type", new String[]{inputName}));}}}return invocation.invoke();}}