Java篇 Mysql+Servlet+Jsp+Ajax 文件上传(三)

/**
 *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;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值