SmartUpload上传组件:
准备前提:smartupload.jar
要想进行上传,则必须使用HTML中提供的file控件,而且<form>也必须使用enctype属性进行封装。
smartupload.html
<html>
<head>
<title>smartupload Test</title>
</head>
<body>
<form action="smartupload.jsp" method="post" enctype="multipart/form-data">
请选择文件:<input type="file" name="pic">
<input type ="submit" value="上传">
</form>
</body>
</html><span style="font-weight: bold; ">
</span>
*表单中使用了file控件进行文件的选择,而且在form上使用enctype进行了表单封装,表示表单将按照二进制的方式提交,
即所有的操作表单此时不再是分别提交,而是将所有内容都按照二进制的方式提交。
smartupload.jsp
接收图片,保存在根目录中的upload文件夹下:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="org.lxh.smart.*"%>
<html>
<head>
<title>smartupload Test</title>
</head>
<body>
<%
SmartUpload smart = New SmartUpload();
smart.initialize(pageContext);
smart.upload();
smart.save("upload");
%>
</body>
</html><span style="color:#000099;font-weight: bold; ">
</span>
混合表单
smartupload2.html
<span style="font-size:12px;"><html>
<head>
<title>smartupload Test</title>
</head>
<body>
<form action="smartupload2.jsp" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"><br>
照片:<input type="file" name="pic"><br>
<input type ="submit" value="上传">
<input type="reset" value="重置">
</form>
</body>
</html></span><span style="font-size:18px;font-weight: bold; ">
</span>
接收封装表单的文本数据:smartupload2.jsp
<span style="font-size:12px;"><%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="org.lxh.smart.*"%>
<html>
<head>
<title>smartupload Test</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK"); //解决乱码
%>
<%
SmartUpload smart = New SmartUpload(); //实例化SmartUpload上传组件
smart.initialize(pageContext); //初始化上传操作
smart.upload(); //上传准备
String name = smart.getRequest().getParameter("uname"); //接收请求参数
smart.save("upload"); //将上传文件保存在upload文件夹中
%>
<h2>姓名:<%=name%></h2>
<h2>request无法取得:<%=request.getParameter("uname")%></h2>
</body>
</html></span><span style="font-size:18px;font-weight: bold; ">
</span>
*由于表单进行了二进制封装,所以单纯靠request对象是无法取得提交参数的,
必须依靠SmartUpload类中的getRequest().getParameter()方法才能取得请求的参数。
批量上传
编写表单可以上传三个文件:smartupload3.html
<html>
<head>
<title>smartupload Test</title>
</head>
<body>
<form action="smartupload3.jsp" method="post" enctype="multipart/form-data">
照片1:<input type="file" name="pic1"><br>
照片2:<input type="file" name="pic2"><br>
照片3:<input type="file" name="pic3"><br>
<input type ="submit" value="上传">
<input type="reset" value="重置">
</form>
</body>
</html>
smartupload3.jsp
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="org.lxh.smart.*"%>
<%@ page import="IPTimeStamp"%><!--定义一个IP时间戳的操作类,为了重命名上传的文件-->
<html>
<head>
<title>smartupload Test</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK"); //解决乱码
%>
<%
SmartUpload smart = New SmartUpload(); //实例化SmartUpload上传组件
smart.initialize(pageContext); //初始化上传操作
smart.upload(); //上传准备
IPTimeStamp its = New IPTimeStamp(request.getRemoteAddr()); //实例化IPTimeStamp对象
For(int x=0;x<smart.getFiles().getCount();x++){
String ext = smart.getFiles().getFile(x).getFileExt(); //取得文件后缀
String fileName = its.getIPTimeRand()+"."+ext; //拼凑文件名称
smart.getFiles().getFile(x).saveAs(getServletContext().getRealPath("/")+"upload"+java.io.File.separator+fileName); //保存文件
}
%>
</body>
</html>