解决 jsp 文件上传的类
来源:互联网 发布:delsey 知乎 编辑:程序博客网 时间:2024/05/20 18:19
原来只知道jspsmart 类是用来处理jsp 文件上传的有用类,但是由于form 添加了enctype的属性使jsp内置对象reuqest失效,这一问题由于没有实际的需求到,就没有想去解决,前几天突然有人问我这方面的问题我一时也回答不上来,就到网上查了一下,原来jspsamrt 这个工具包不仅包含了处理上传文件的 SmartFile类,还有一个替代request内置对象的类SmartRequest。 下面把接收页面的示例代码转载一下,
<%@ page contentType="text/html; charset=utf8" language="java"
import="jspsmart.*" errorPage="" %>
<title>文件上传处理页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
// su.setMaxFileSize(10000);
// 2.限制总上传数据的长度。
// su.setTotalMaxFileSize(20000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
// su.setAllowedFilesList("doc,txt");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
//jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
su.upload();
// 将上传文件全部保存到指定目录
int count = su.save("../webapps/");
out.println(count+"个文件上传成功!<br/>");
// 利用Request对象获取参数之值
out.println("TEST="+su.getRequest().getParameter("TEST")
+"<BR><BR>");
// 逐一提取上传文件信息,同时可保存文件。
for (int i=0;i<su.getFiles().getCount();i++)
{
jspsmart.SmartFile file = su.getFiles().getFile(i);
// 若文件不存在则继续
if (file.isMissing()) continue;
// 显示当前文件信息
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" +
file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
// 将文件另存
// file.saveAs("/upload/" + myFile.getFileName());
// 另存到以WEB应用程序的根目录为文件根目录的目录下
// file.saveAs("/upload/" + myFile.getFileName(),su.SAVE_VIRTUAL);
// 另存到操作系统的根目录为文件根目录的目录下
// file.saveAs("c://temp//" + myFile.getFileName(), su.SAVE_PHYSICAL);
}
%>
值得注意的是这个SmartRequest 有一个方法getParamterValues("String") 可以得到前一个页面定义同名对象的一个数组,例子:
<%@ page contentType="text/html; charset=utf8" language="java"
import="jspsmart.*" errorPage="" %>
<title>文件上传处理页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
// su.setMaxFileSize(10000);
// 2.限制总上传数据的长度。
// su.setTotalMaxFileSize(20000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
// su.setAllowedFilesList("doc,txt");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
//jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
su.upload();
// 将上传文件全部保存到指定目录
int count = su.save("../webapps/");
out.println(count+"个文件上传成功!<br/>");
// 利用Request对象获取参数之值
out.println("TEST="+su.getRequest().getParameter("TEST")
+"<BR><BR>");
// 逐一提取上传文件信息,同时可保存文件。
for (int i=0;i<su.getFiles().getCount();i++)
{
jspsmart.SmartFile file = su.getFiles().getFile(i);
// 若文件不存在则继续
if (file.isMissing()) continue;
// 显示当前文件信息
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" +
file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
// 将文件另存
// file.saveAs("/upload/" + myFile.getFileName());
// 另存到以WEB应用程序的根目录为文件根目录的目录下
// file.saveAs("/upload/" + myFile.getFileName(),su.SAVE_VIRTUAL);
// 另存到操作系统的根目录为文件根目录的目录下
// file.saveAs("c://temp//" + myFile.getFileName(), su.SAVE_PHYSICAL);
}
%>
值得注意的是这个SmartRequest 有一个方法getParamterValues("String") 可以得到前一个页面定义同名对象的一个数组,例子:
<input type="text" name="test" />
<input type="text" name="test" />
<input type="text" name="test" />
到action 页用su.getRequest().getParameterValues("test") 就可以得到一个数组。
- 解决 jsp 文件上传的类
- jsp的文件上传
- jsp的文件上传
- JSP文件的上传
- 【已解决】Jsp实现文件上传功能
- JSP实现文件上传,解决上传文件名为乱码问题
- 简单的JSP文件上传
- jsp文件上传的处理
- jsp文件上传的处理
- 图片上传的JSP文件
- JSP的文件上传方法
- JSP学习笔记:通过UUID为解决中文文件上传后的命名问题
- jsp+servlet 文件上传 解决中文乱码问题
- JSP 进行文件上传。JSP文件上传
- 用jsp实现文件的上传
- jsp无刷新文件上传的实现
- 用JSP编写文件上传的程序
- jsp文件上传组建的使用
- SQL 介绍
- 昨天发了一篇文章,今天看不到了,真的是郁闷
- 输入码、区位码、国标码与机内码
- MIME类型汇总列表
- 我喜欢的文章 --我在打工生涯
- 解决 jsp 文件上传的类
- SUSE Linux 设定 ftp 服务 vsftp
- 覆写和重载 虚方法与抽象方法
- 谁能帮帮小弟。。怎么才能实现文件上传和下载
- 变量作用范围
- 如何使用JDOM对XML文件进行操作
- proc伪文件系统
- C++中类的静态数据成员函数解析
- java的package机制