<form name="userInfo" method="post" action="doupload.jsp" ENCTYPE="multipart/form-data">
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。
就得加ENCTYPE="multipart/form-data"。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。 form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象su.getRequest().getParameterValues();取数组值
su.getRequest().getParameter( );取单个参数单个值
上传图片前的准备及上传图片:
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
su.setMaxFileSize(10000000);
// 2.限制总上传数据的长度。
su.setTotalMaxFileSize(20000000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
su.setAllowedFilesList("doc,txt,jpg");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
su.upload();
// 将上传文件全部保存到指定目录
su.save(getServletContext().getRealPath("/"));
获取上传文件的各个属性:
com.jspsmart.upload.File file = su.getFiles().getFile(0);
// 若文件不存在则继续
表单项名(FieldName):file.getFieldName()
文件长度(Size): file.getSize()
文件名(FileName): file.getFileName()
文件扩展名(FileExt): file.getFileExt()
文件全名(FilePathName): file.getFilePathName()