Struts2文件上传(二) 深入FileUploadInterceptor
2009-09-18 00:00:00 来源:WEB开发网这里我们配置了fileUpload拦截器,我们还必须吧dufaultStack加上,由于defaultStack中已经包含了fileUpload拦截器,所以fileUpload拦截器会执行俩遍,所以我们会在日志信息中看到俩次清除临时文件的记录。
UploadAction:
Java代码
public class UploadAction extends ActionSupport {
//必须的参数,参数名与表单名相同,如果一个表单名对应多个上传文件,
//则必须为数组或List
private File[] upload;
//必须的参数,格式:表单名+ContentType,表示上传文件类型
private String[] uploadContentType;
//必须的参数,格式:表单名+FileName,表示上传的文件名
private String[] uploadFileName;
//文件保存目录
private String savePath;
public LoginAction() {
}
public String upload() throws Exception {
for (int i=0;i<getUpload().length;i++) {
FileInputStream in = new FileInputStream(getUpload()[i]);
FileOutputStream out = new FileOutputStream(getSavePath()+"\\"+getUploadFileName()[i]);
//将数据拷贝到上传目录,这里没有必要使用缓冲流,因为IOUtils工具类已经使用了缓存
IOUtils.copy(in, out);
}
return SUCCESS;
}
。。。。。。get/set方法。。。。
页面表单示例:
Html代码
<!-- method一定要为post,enctype一定要为 multipart/form-data,表单名一定要和Action中的参数名相同-->
<s:form method="post" id="loginForm" action="Upload"
enctype="multipart/form-data">
<table style="border: 1px solid;" align="center">
<thead>
<tr>
<td style="text-align: center" colspan="2">文件上传</td>
</tr>
</thead>
<tbody>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="password"></input></td>
</tr>
<tr>
<td colspan="2"><input type="file" name="upload" /></td>
</tr>
<tr>
<td colspan="2"><input type="file" name="upload" /></td>
</tr>
<tr>
<td colspan="2"><input type="file" name="upload" /></td>
</tr>
<tr>
<td><input type="button" value="Upload" id="upload" /></td>
<td><input type="button" value="Cancel" id="cancelUpload" /></td>
</tr>
</tbody>
</table>
这样,一个简单的文件上传就实现了,但是感觉文件上传无声无息,特别上传大文件,等了很长时间才知道有没有上传成功,要是有上传进度条能及时显示上传进度,这样的文件上传的功能才能算完善了,上传进度条的功能下篇再写。
更多精彩
赞助商链接