文件上传很非常常用的功能,一般的思路都是要么将文件作为二进行数据存储到数据库中,当然这种不常用;还有就是将文件的名字存在数据库中,文件则存在硬盘上一个固定的文件中,这种比较常见,我就介绍比较常见的上传吧,为了简化,并没有将数据入库.
首先在index.jsp页面,写上
<li>测试struts上传</li>
<form action="upload.do"method="post" enctype="multipart/form-data">
标题:<inputtype="text" name="title"><br>
文件:<inputtype="file" name="myfile"><br>
<inputtype="submit" value="提交">
</form>
说明 : 需要输入标题和选择文件 . 对于上传文件 ,method 必须为 post,enctype 必须为 multipart/form-data .action 为 upload.do, 所以需要去 xml 文件中配置 action.
Struts-config.xml页面
<form-beans>
<form-beanname="uploadform"type="com.lyl.struts.UploadActionForm"></form-bean>
</form-beans>
<action-mappings>
<actionpath="/upload"
type="com.lyl.struts.UploadAction"
name="uploadform"
scope="request"
>
<forwardname="success"path="/uploadsuccess.jsp"></forward>
</action>
</action-mappings>
需要在xml配置,path为/upload,Action为UploadAction,ActionForm为UploadActionForm.成功之后会跳转到uploadsuccess.jsp页面.
根据jsp页面需要的标题和文件,建立ActionForm
public classUploadActionForm extends ActionForm {
privateString title;
//上传的文件必须采用FormFile声明
privateFormFile myfile;
publicString getTitle() {
returntitle;
}
publicvoid setTitle(String title) {
this.title= title;
}
publicFormFile getMyfile() {
returnmyfile;
}
publicvoid setMyfile(FormFile myfile) {
this.myfile= myfile;
}
}
然后就是
, Action
页面对于文件的处理
,
从
ActionForm
中获取标题和文件名
,
将文件放置到
c
盘下
.
最后跳转到成功页面
.
public classUploadAction extends Action {
publicActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequestrequest, HttpServletResponse response)
throwsException {
UploadActionFormuaf = (UploadActionForm) form;
System.out.println("title="+uaf.getTitle());
System.out.println("fileName="+uaf.getMyfile().getFileName());
uaf.getMyfile().getFileData();
FileOutputStreamfos = new FileOutputStream("c:\\"+uaf.getMyfile().getFileName());
fos.write(uaf.getMyfile().getFileData());
fos.flush();
fos.close();
returnmapping.findForward("success");
}
}
uploadsuccess.jsp页面,就是显示一下上传成功的标题和文件名.
文件名称${uploadform.title } ${uploadform.myfile.fileName }
上传成功
运行效果:输入标题,选择文件
成功,提示上传成功.
在C盘目录下找到Noname2.txt.
整个上传就是这样,很简单.但是也是很实用的功能.