javaweb 简单的文件上传动态添加上传文件数量[从学习到工作(六)]

    1.jsp页面主要代码块

  <script type="text/javascript" src="<%=basePath%>js/jquery.min.js"></script>
<form action="<%=basePath%>upload"  method="post" enctype="multipart/form-data">
    	File:<input type="file" name="file"/> <input type="button" id="add" value="add"/><br/>
    	<div></div>
    	<input type="submit"  value="submit"/>
    </form>
    
    <script type="text/javascript">
    	$(function() {
    		$('#add').click(function() {
    			var random = Math.random()*10;
    			var file="File:<input type='file' name='file"+random+"'/><br/>"; 
    			$("div").append(file);
    		});
    	});
    </script>
   2.提交到后台servlet 处理
    
<pre name="code" class="java">package com.zenglx.test.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		//文件保存路径
		String path = getServletContext().getRealPath("/up");
		
		//在硬盘上设立一个临时保存地方
		DiskFileItemFactory dff = new DiskFileItemFactory();
		dff.setSizeThreshold(1024*1024);
		dff.setRepository(new File("f:/a"));
		
		//创建文件上传的核心类
		ServletFileUpload upload = new ServletFileUpload(dff);
		List<Map<String,String>> list = new ArrayList<Map<String,String>>();
		try {
			//解析request获得文件条目
			List<FileItem> fileItems = upload.parseRequest(request);
			
			//循环读取上传的文件信息
			for(FileItem fileItem:fileItems) {
				Map<String,String> map = new HashMap<String,String>();
				String fileName = fileItem.getName();
				fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
				
				String size = fileItem.getSize()+"byte";
				String fileType = fileItem.getContentType();
				
				//获得文件后缀名
				String extName = fileName.substring(fileName.lastIndexOf("."));//.jpg
				//UUID
				String uuid = UUID.randomUUID().toString().replace("-", "");
				//得到新的文件名
				String newName = uuid+extName;

				
				//创建保存的文件
				File dest = new File(path+File.separator+newName);
				
				//将文件保存到目标地址
				//方式一
				/*InputStream is = fileItem.getInputStream();
				FileUtils.copyInputStreamToFile(is, dest);
				*/
				//方式二
				fileItem.write(dest);
				
				//删除临时文件
				fileItem.delete();
				map.put("fileName", fileName);
				map.put("fileType",fileType);
				map.put("size",size);
				list.add(map);
			}
			request.setAttribute("list", list);
			request.getRequestDispatcher("/success.jsp").forward(request, response);
		} catch (FileUploadException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}


 
 

3.上传成功页面展示

 <c:forEach items="${list}" var="info">
    	文件名称:<c:out value="${info.fileName}" /><br/>
    	文件类型:<c:out value="${info.fileType}"/><br/>
    	文件大小:<c:out value="${info.size}"></c:out><br/><br/>
 </c:forEach>


猜你喜欢

转载自blog.csdn.net/zengliangxi/article/details/36040357