文件上传最常用到的就是在form submit中,对于需要上传文件的表单记得设置enctype="multipart/form-data",然后在表单递交后从RequestContext中取得相关数据信息,这里要借助于uploadbean.jar
用以下语句可以获取一般的表单数据
MultipartFormDataRequest mrequest = new MultipartFormDataRequest(context.getRequest());
Sting firstName = mrequest.getParameter("firstName");
而对于文件之类的要先上传到服务器文件目录下,然后再作相关处理,核心代码如下:
Hashtable files = mrequest.getFiles();
if ((files != null) || (!files.isEmpty())) {
int iFileCount = files.size();
UploadFile file = (UploadFile) files.get("attachment");
sLocalFileName = file.getFileName();
//int ii = sLocalFileName.indexOf(".");
//String sExt = sLocalFileName.substring(ii, sLocalFileName.length());
//log.info("sExt:" + sExt);
//java.util.Date dt = new java.util.Date(System.currentTimeMillis());
//SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
//sServerFileName = fmt.format(dt);
sServerFileName = sLocalFileName;
File dir = new File(sPath);
if (!dir.exists()) {
dir.mkdirs();
}
upBean.setFolderstore(sPath);
upBean.addUploadListener(fileMover);
fileMover.setNewfilename(sServerFileName);
upBean.store(mrequest, "attachment");
log.info("file path is " + sPath + "/" + sServerFileName);
if (!sLocalFileName.equals("")) {
attachFile = new File(sPath + "/" + sServerFileName);
log.info("fileAttachment:" + attachFile.getName());
//smtpCore.addAttachment(attachFile);
}
}
这里的smtpCore.addAttachment(attachFile);是我需要将此文件再作为附件发送到某邮箱地址中,当然发送完毕后如果在服务器上不需要存档的话就可以直接用file.delete()将其删除。
Note:
该实现需要借用到以下三个包uploadbean.jar,filemover.jar,cos.jar
其中cos.jar虽然在java文件中貌似没有引用到,但在lib中如果不把它放进去就会报错,这个在调试过程中就发现了这一点。