博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet 实现文件上传
阅读量:6413 次
发布时间:2019-06-23

本文共 2278 字,大约阅读时间需要 7 分钟。

hot3.png

在Servlet中要实现文件上传,需要以下第三方架包

 

jsp页面的表单应该设为post方式提交,并且设置 enctype="multipart/form-data" ,默认的为 enctype="application/x-www-form-urlencoded"

${message}为显示上传操作结果通知。

 

文件上传支持以下格式:"txt","doc","docx","xls","xlsx","ppt","pdf","xml","html"
文件上传:
${message}

 

后台实现如下,可以判断上传类型,注意:文件上传名重复,会覆盖原有文件,所以自己要加判断

 

 

 

protected void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		request.setCharacterEncoding("utf-8");		String[] allowTypes = new String[]{"txt","doc","docx","xls","xlsx","ppt","pdf","xml","html"};		DiskFileItemFactory factory = new DiskFileItemFactory();		ServletFileUpload upload = new ServletFileUpload(factory);		String path = request.getSession().getServletContext().getRealPath("/files");		System.out.println(path);		try {			List
items = (List
) upload.parseRequest(request); Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); if(item.isFormField()){ System.out.println("文本信息"); }else{ if (item.getName() != null && !item.getName().equals("")) { String name = item.getName(); String type = name.substring(name.lastIndexOf('.')+1); boolean flag = false; for(String at:allowTypes){ if(at.equals(type)){ flag = true; } } if(flag==false){ System.out.println("文件格式不支持"); request.setAttribute("message", "文件格式不支持"); }else{ int start = name.lastIndexOf("\\"); String filename = name.substring(start+1); File file = new File(path+"/"+filename); item.write(file); request.setAttribute("message", "文件上传成功"); } }else{ System.out.println("请选择待上传文件"); request.setAttribute("message", "请选择待上传文件"); } } } }catch (Exception e) { e.printStackTrace(); request.setAttribute("message", "文件上传失败"); } request.getRequestDispatcher("upload.jsp").forward(request, response); }

 

web.xml文件配置

 

转载于:https://my.oschina.net/jiangli0502/blog/122383

你可能感兴趣的文章
MySQL读写分离--mysql-proxy和amoeba
查看>>
[Swift]UIKit学习之警告框:UIAlertController和UIAlertView
查看>>
linux运维实战练习-2015年9月5日课程作业
查看>>
我的友情链接
查看>>
linux的selinux 状态以及关闭
查看>>
如何在win10系统上安装linux子系统
查看>>
XenApp服务器警报介绍
查看>>
20150910-Linux程序包管理
查看>>
matlab-线性代数 tril triu 对已知矩阵取上、下三角矩阵
查看>>
TurboGate全能邮件网关金融行业解决方案
查看>>
MySql实现远程连接访问
查看>>
AppRTC(WebRTC服务器)的编译安装
查看>>
CentOs操作RabbitMq常用命令
查看>>
Java并发编程:volatile关键字解析
查看>>
表单Form以及表单元素,框架集(了解)及iframe(重点)
查看>>
SSH端口映射
查看>>
“C++的数组不支持多态”?
查看>>
提高企业虚拟化安全
查看>>
nagios监控私有服务过程
查看>>
列出对像属性,for(var i in obj)
查看>>