action里面的代码:
- Java code
//通过FormFile对象上传文件private FormFile processDef; private FormFile processImage; public FormFile getProcessDef() { return processDef; } public void setProcessDef(FormFile processDef) { this.processDef = processDef; } public FormFile getProcessImage() { return processImage; } public void setProcessImage(FormFile processImage) { this.processImage = processImage; }
页面的代码:
- HTML code
<tr> <td class="tdEditLabel" ><strong>请选择流程定义文件</strong></td> <td class="tdEditContent"><strong><input type="file" name="processDef"></strong> </td> <td class="tdEditLabel" ><strong>请选择流程定义图片</strong></td> <td class="tdEditContent"><strong><input type="file" name="processImage"></strong></td> </tr>
但是上传之后 出现了以下的错误!:
ognl.MethodFailedException: Method "setProcessDef" failed for object su.rong.jie.action.WorkflowAction@41fef [java.lang.NoSuchMethodException: setProcessDef([Ljava.io.File;)]
。。。
/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setProcessDef([Ljava.io.File;)
。。。
\--------------------------------------/
expr: processDef val: [Ljava.io.File;@ccc48b context: ognl.OgnlContext@c7df21c1 root:[su.rong.jie.action.WorkflowAction@41fef, com.opensymphony.xwork2.DefaultTextProvider@17ba2e9] value: [Ljava.io.File;@ccc48b
ognl.MethodFailedException: Method "setProcessImage" failed for object su.rong.jie.action.WorkflowAction@41fef [java.lang.NoSuchMethodException: setProcessImage([Ljava.io.File;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)
------解决方案--------------------
- Java code
源码package com.framework.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileUploadAction extends ActionSupport { private static final long serialVersionUID = 1L; private String username; private String password; private List<File> file; private List<String> fileFileName; private List<String> fileContentType; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<File> getFile() { return file; } public void setFile(List<File> file) { this.file = file; } public List<String> getFileFileName() { return fileFileName; } public void setFileFileName(List<String> fileFileName) { this.fileFileName = fileFileName; } public List<String> getFileContentType() { return fileContentType; } public void setFileContentType(List<String> fileContentType) { this.fileContentType = fileContentType; } @SuppressWarnings("deprecation") @Override public String execute() throws Exception { for (int i = 0; i < file.size(); i++) { InputStream is = new FileInputStream(file.get(i)); String root = ServletActionContext.getRequest().getRealPath("\\item"); File destFile = new File(root, this.getFileFileName().get(i)); OutputStream os = new FileOutputStream(destFile); byte[] by = new byte[400]; int length = 0; while ((length = is.read(by)) > 0) { os.write(by, 0, length); } is.close(); os.close(); } return "success"; }}