/**
*Servlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = null;
// 新建一个SmartUpload对象,此项是必须的
SmartUpload myupload = new SmartUpload();
// 初始化,此项是必须的
ServletConfig config = getServletConfig();
// 初始化SmartUpload
myupload.initialize(config, request, response);
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");
try {
// 限制每个上传文件的最大长度
myupload.setMaxFileSize(1024 * 1024);
// 限制总上传数据的长度
myupload.setTotalMaxFileSize(7 * 1024 * 1024);
// 设定允许上传的文件(通过扩展名限制)
myupload.setAllowedFilesList("doc,txt,jpg,gif,pdf");
// 设定禁止上传的文件(通过扩展名限制)
myupload.setDeniedFilesList("bat,jsp,htm,html,exe");
// 上传文件,此项是必须的
myupload.upload();
// 统计上传文件的总数
int count = myupload.getFiles().getCount();
// 取得Request对象
Request myRequest = myupload.getRequest();
String rndFilename = null;
String fileExtName = null;
String fileName = null;
String filePathName = null;
String memo = null;
Date dt = null;
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
// 逐一提取上传文件信息,同时可保存文件
for (int i = 0; i < count; i++) {
// 取得一个上传文件
File file = myupload.getFiles().getFile(i);
// 若文件不存在则继续
if (file.isMissing()){
continue;
}
// 取得文件名
fileName = file.getFileName();
// 取得文件全名
filePathName = file.getFilePathName();
// 取得文件扩展名
fileExtName = file.getFileExt();
// 取得随机文件名
dt = new Date(System.currentTimeMillis());
Thread.sleep(100);
memo = myRequest.getParameter("memo" + i);
rndFilename = fmt.format(dt) +memo+ "." + fileExtName;
// 将文件另存,以WEB应用的根目录作为上传文件的根目录
file.saveAs("/upload/" + rndFilename, myupload.SAVE_VIRTUAL);
Utils utils = new Utils();
int j = utils.createImage(memo, "/upload/" + rndFilename);
//把文件名和路径插入数据库
if(j > 0){
path = "/show_all";
}else{
path = "/uploadFile.jsp";
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
request.getRequestDispatcher(path).forward(request, response);
}
}
/**
*Servlet是否上传成功
*/
public class ShowServer extends HttpServlet{
public void doPost(HttpServletRequest request , HttpServletResponse response) throws ServletException ,IOException{
String path = null;
List<Images> list = null;
Utils utils = new Utils();
list = utils.imageList();
if(list.size() > 0){
request.setAttribute("imagesList", list);
path = "/show.jsp";
}else{
path = "/uploadFile.jsp";
}
request.getRequestDispatcher(path).forward(request, response);
}
/**
*Jsp
*/
<html>
<head>
<title>上传文件实例</title>
</head>
<body>
<h2>上传文件实例</h2>
<hr>
请选择上传文件数量:
<select id="number" onchange="buildFileInput()">
<option value=1>1张图片</option>
<option value=2>2张图片</option>
<option value=3>3张图片</option>
<option value=4>4张图片</option>
<option value=5>5张图片</option>
<option value=6>6张图片</option>
<option value=7>7张图片</option>
<option value=8>8张图片</option>
<option value=9>9张图片</option>
</select>
<form name="form1" enctype="multipart/form-data" action="UploadServlet" method="post">
<div id="files">
</div>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
<script language="javascript">
//根据选择的文件数量构造文件输入框列表
function buildFileInput(){
//取得文件数量下拉列表值
var num = document.all.number.value;
//将现有的文件输入框清除
clearFileInput();
//构造出新的文件输入框列表
for (var i=0 ; i<num ; i++){
//创建一个div标签节点
filediv = document.createElement("div");
//创建一个文本节点
labeltext = document.createTextNode("第"+(i+1)+"个文件:");
//创建一个文件输入框节点
fileinput = document.createElement("input");
fileinput.type = "file";
fileinput.name = "file"+i;
//创建一个文本节点
memotext = document.createTextNode(" 第"+(i+1)+"个文件备注:");
//创建一个文本输入框节点
memoinput = document.createElement("input");
memoinput.type = "text";
memoinput.name = "memo"+i;
//将文本节点追加成div标签节点的子节点
filediv.appendChild(labeltext);
//将文件输入框节点追加成div标签节点的子节点
filediv.appendChild(fileinput);
//将文本节点追加成div标签节点的子节点
filediv.appendChild(memotext);
//将文本输入框节点追加成div标签节点的子节点
filediv.appendChild(memoinput);
//将div标签节点追加成files的子节点
document.all.files.appendChild(filediv);
}
}
//将现有的文件输入框清除
function clearFileInput(){
while (document.all.files.childNodes.length>0){
//alert(document.all.files.childNodes.length);
document.all.files.removeChild(document.all.files.childNodes[0]);
}
}
//初始化文件输入框列表
buildFileInput();
</script>
</html>
/**
*图片显示页面
*/
<body>
<center>
<div>
<%
String myProjectPath = request.getContextPath();
List<Images> list = (List)request.getAttribute("imagesList");
Iterator<Images> iterator = list.iterator();
while(iterator.hasNext()){
Images images = iterator.next();
%>
<img alt="<%=images.getImageName()%>"
src="<%=myProjectPath+"//"+images.getImageAddress() %>"
width="500px" height="450px"><br/><br/>
<%} %>
</div>
</center>
</body>
/**
*Web
*/
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID">
<display-name>JSP_Upload</display-name>
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>servletUp.UploadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>show</servlet-name>
<servlet-class>servletUp.ShowServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>show</servlet-name>
<url-pattern>/show_all</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
注意:
1.导入2个包;
2.在WebRoot下创文件夹装文件;
3.需要创建据库表并且编写JDBC;