文件上传组件的应用

本文介绍了一个基于Java的注册页面逻辑处理Bean(doReg.java),实现了用户注册功能,并集成了Apache Commons FileUpload组件用于处理文件上传。文章详细展示了如何设置上传文件的大小限制、临时存储路径及解析multipart表单数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 注册页面的逻辑处理bean:doReg.java
其中包括apache上传组件1.2.1的应用
 packagehuc.blog.servlet;

importhuc.blog.bean.User;
importhuc.blog.op.UserOp;

importjava.io.File;
importjava.io.IOException;
importjava.util.Date;
importjava.text.SimpleDateFormat;
importjava.util.List;

importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;

publicclassDoRegextendsHttpServlet...{

/***//**
*
*/

privatestaticfinallongserialVersionUID=1L;

@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException...{
doPost(req,resp);
}


@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException...{
SimpleDateFormatf
=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
Useruser
=newUser();
//设置保存上传文件的目录
StringuploadDir=getServletContext().getRealPath("/upload");
if(uploadDir==null)...{
System.out.println(
"该目录无法访问!");
return;
}


FilefileUploadDir
=newFile(uploadDir);

if(!fileUploadDir.exists())...{
if(!fileUploadDir.mkdir())...{
System.out.println(
"无法创建目录!");
return;
}

}


//RequestContextrequestContext=newServletRequestContext(req);
//判断表单中是否为multipart/form-data类型的数据,非则终止
if(!ServletFileUpload.isMultipartContent(req))...{
System.out.println(
"不能处理非multipart/form-data类型的数据!");
return;
}


//创建DiskFileItemFactory对象,并进行一些设置
DiskFileItemFactoryfactory=newDiskFileItemFactory();
//设置直接能够存储的最大文件量,超出后采用临时文件缓存
factory.setSizeThreshold(1024*1024);//以字节为单位
/**//*Setsthedirectoryusedtotemporarilystorefilesthat
*arelargerthantheconfiguredsizethreshold.
*默认为tomcat的安装目录 emp下
*/

//factory.setRepository(java.io.Filerepository);

ServletFileUploadupload
=newServletFileUpload(factory);
//设置最多上传的数据量
upload.setSizeMax(1024*1024*10);
/***//**
*Specifiesthecharacterencodingtobeused
*whenreadingtheheadersofindividualpart.
*Whennotspecified,ornull,therequestencodingisused.
*Ifthatisalsonotspecified,ornull,theplatformdefaultencodingisused.
*/

//upload.setHeaderEncoding("UTF-8");

List
<?>items=null;
//得到表单字段的集合
try...{

items
=upload.parseRequest(req);

}
catch(FileUploadExceptione)...{
e.printStackTrace();
}

for(Objectitem:items)...{

FileItemfileItem
=(FileItem)item;
//DetermineswhetherornotaFileIteminstancerepresentsasimpleformfield.
if(fileItem.isFormField())...{

//ReturnsthecontentsofthefileitemasaString,usingthespecifiedencoding.
Stringcontent=fileItem.getString("UTF-8");
StringfieldName
=fileItem.getFieldName();

if(fieldName.equals("userName"))...{
user.setUserName(content);
}
elseif(fieldName.equals("nickName"))...{
user.setNickName(content);
}
elseif(fieldName.equals("userPass"))...{
user.setUserPass(content);
}
elseif(fieldName.equals("email"))...{
user.setEmail(content);
}
elseif(fieldName.equals("city"))...{
user.setCity(content);
}
elseif(fieldName.equals("spaceName"))...{
user.setSpaceName(content);
}

}
else...{
//Returnstheoriginalfilenameintheclient'sfilesystem,
//asprovidedbythebrowser(orotherclientsoftware).
Stringsource=fileItem.getName();

//如果没有选择文件,则不进行处理
if(source.trim().equals(""))...{
continue;
}


//得到上传的文件名
intpos=source.lastIndexOf("/");
StringfileName
=source.substring(pos+1);
Filefile
=newFile(uploadDir,fileName);

//writeanuploadeditemtodisk
try...{
fileItem.write(file);
}
catch(Exceptione)...{
e.printStackTrace();
}
finally...{
//Deletestheunderlying(潜在的)storageforafileitem,
//includingdeletinganyassociatedtemporarydiskfile
fileItem.delete();
}

}

}

Datedate
=newDate();
user.setRegDate(f.format(date));
user.setUpdateTime(f.format(date));

UserOpuserOp
=newUserOp();

if(!userOp.checkNotExist(user))...{
Stringmsg
="该用户已存在,请重新填写!";
req.setAttribute(
"msg",msg);
req.getRequestDispatcher(
"../reg.jsp").forward(req,resp);
return;
}

if(userOp.add(user))...{
req.setAttribute(
"info","success");
req.getRequestDispatcher(
"../reginfo.jsp").forward(req,resp);
}
else...{
req.setAttribute(
"info","failed");
req.getRequestDispatcher(
"../reginfo.jsp").forward(req,resp);
}

}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值