package onlyfun.caterpillar;档案经由窗体上传至服务器之后,会储存为FormFile型态的对象,您可以藉由这个对象来取得上传档案的相关讯息,例如 getContentType()、getFileName()、getFileSize()等等,getFileData()可以取得档案的位数组资 料,getInputStream()可以取得InputStream型态之对象,撰写一个简单的 Action,将接收到的档案储存下来:
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;
public class UploadForm extends ActionForm {
private FormFile file;
public void setFile(FormFile file) {
this.file = file;
}
public FormFile getFile() {
return file;
}
public void reset(ActionMapping mapping,
HttpServletRequest req) {
file = null;
}
}
package onlyfun.caterpillar;可以这么撰写窗体,记得设定enctype属性为multipart/form-data:
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
UploadForm fileForm = (UploadForm) form;
FormFile file = fileForm.getFile();
FileOutputStream fileOutput = new FileOutputStream(
"/home/caterpillar/files/" + file.getFileName());
fileOutput.write(file.getFileData());
fileOutput.flush();
fileOutput.close();
file.destroy() ; // destroy temperaty file
return mapping.findForward("success");
}
}
... <form name="uploadForm" enctype="multipart/form-data" method="post" action="/strutsapp/upload.do"> <input type="file" name="file"> <br> <input type="submit"value="上传"> </form> ...
剩下的就是配置struts-config.xml中的ActionForm与Action对应了,相信对现在的您来说已经不难。