下面是个简单的例子
1. jsp网页
<html:form action="upload.do" method="post" enctype="multipart/form-data">
选择文件:<html:file property="picture" />
<html:submit>上传</html:submit>
</html:form>
2. form bean
在这里主要要做两件事,第一个当然是import相关的package。
import org.apache.struts.upload.*;
然后宣告一个相对应的字段,并为该字段生成getter和setter方法
private FormFile picture = null;
public FormFile getPicture() {
return picture;
}
public void setPicture(FormFile p) {
this.picture = p;
}
3. Action
UploadForm theForm = (UploadForm) form;
FormFile picture = theForm.getPicture();
String fileName= picture.getFileName();
String contentType = picture.getContentType();
String size = (picture.getFileSize() + " bytes");
//do something…
//可以用 InputStream 取得 picture.getInputStream
关于Struts文件上传的参数问题
在开发JDlog中的写日志上传附件时发现,Struts在对文件上传的处理有些不太完善。上传的参数最好封装在FormBean中,比如添加FormFile字段来处理,如果表单设置为multipart/form-data时那么struts会自动将上传文件域与formBean中的属性对应上,在execute中就可以直接进行处理,但是如果这个时候你在execute方法中无法通过request.getParameter来读取普通表单字段。该问题目前正在研究中......
Struts关于参数传递的问题
Struts框架中当Action执行完毕返回到一个页面是也就是ActionForward,怎么给这个页面传递一些参数呢?(我的意思是直接在页面后面加入参数而不是通过request/session等来传递,例如input.jsp?name=tom)此问题我正在研究中,有答案自然会跟贴上来。