您的位置:首页 > 编程语言 > Java开发

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

2014-06-30 21:27 489 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: