实现多个文件上传
来源:互联网 发布:鼎力测试软件下载 编辑:程序博客网 时间:2024/05/29 19:11
思想:
在上传的页面加一个添加的按钮,分别上传
把上传的数据保存到List中
把list放到request中转发到显示页面显示
1.主页
<body>
动态的上传多个文件<br/>
<buttononclick="_add();">增加</button>
<formaction="<c:urlvalue='UpServlet'/>"method="post"enctype="multipart/form-data">
<table id="tb"border="1"width="400">
<tr>
<td>
<input type="file"name="img"/><br/>
说明<inputtype="text"name="desc"/>
</td>
<td>
<buttononclick="_del(this);">删除</button>
</td>
</tr>
</table>
</form>
<buttononclick="_up();">上传</button>
</body>
<scripttype="text/javascript">
function_add(){
var tb = document.getElementById("tb");
var row = tb.insertRow();
var td = row.insertCell();
td.innerHTML='<input type="file"name="img"/><br/>说明<input type="text"name="desc"/>';
td=row.insertCell();
td.innerHTML='<button onclick="_del();">删除</button>';
}
function_del(btn){
var tb = document.getElementById("tb");
//获取这个元素所在行的下标
var row = btn.parentNode.parentNode;
//获取这一行的下标
var index = row.rowIndex;
//根据下标删除这一行
tb.deleteRow(index);
}
function_up(){
document.forms[0].submit();
}
</script>
2.UpServlet
package cn.servlet;
publicclassUpServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
request.setCharacterEncoding("UTF-8");
//获取项目的真实的目录
String path = getServletContext().getRealPath("/up");
DiskFileItemFactory disk = new DiskFileItemFactory();//声明临时文件
ServletFileUpload sfu = newServletFileUpload(disk);//声明解析request的核心类
try{
List<FileItem> list = sfu.parseRequest(request);
//声明一个List集合用于保存上传成功以后的数据
List<Map<String, Object>> res = newArrayList<Map<String,Object>>();
Map<String,Object> mm=null;
//上传
for(FileItem file:list){
if(file.isFormField()){
//获取说明
mm.put("desc", file.getString("UTF-8"));
}else{
//先进入else,因为file在前面
mm = new HashMap<String, Object>();
String fileName = file.getName();
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
mm.put("name",fileName);
mm.put("size", file.getSize());
mm.put("type", file.getContentType());
res.add(mm);
InputStream in = file.getInputStream();
byte[] b =newbyte[1024];
int len = 0;
OutputStream out = new FileOutputStream(path+"/"+fileName);
while((len=in.read(b))!=-1){
out.write(b,0,len);
}
out.close();
in.close();
}
}
//放到request
request.setAttribute("res", res);
//转发
request.getRequestDispatcher("/jsps/show.jsp").forward(request,response);
}catch(Exception e){
e.printStackTrace();
}
}
}
3.显示页
<body>
<imgsrc="<c:urlvalue='/up${fileName}'/>"/><br/>
<c:forEach items="${res}"var="map"varStatus="idx">
${idx.count }<br/>
名:${map.name }<br/>
大小:${map.size }<br/>
类型:${map.type }<br/>
说明:${map.desc }<br/>
</c:forEach>
</body>
- 实现多个文件上传
- struts实现多个文件上传功能
- struts+hibernate实现多个文件上传
- 实现多个文件同时上传
- Asp.net实现多个文件上传
- Asp.net实现多个文件上传
- html实现上传多个文件预览
- 个sevlet实现文件上传
- js实现上传多个图片或者多个文件
- FileUpload框架实现文件上传(多个文件)和下载
- Flex中实现多个文件上传时发生只能上传第一个文件的问题
- 多个文件上传
- 上传多个文件
- 上传多个文件
- 多个文件上传
- 多个文件上传
- 实现上传(增删)多个文件的客户端写法。
- JavaBean实现多个文件上传的两种方法
- 文件操作
- Hosts文件介绍:工作方式和作用及其实践
- 虚拟地址 线性地址 物理地址
- nginx负载均衡session共享解决方案
- 介绍各种压缩格式MPEG1--MPEG4--MPEG7—MPEG21-H.264
- 实现多个文件上传
- HDR阴影高光图像增强
- icinga 添加http service
- 通过iptables限制并发连接数20130515
- 给定一个集合,输出它的所有子集(JAVA实现)
- 初学者必读 MySQL 数据库常见问题汇总
- Nginx动静分离经典案例配置
- 编译安装lnmp步骤
- ACM参考算法集