JSP如何实现文件上传功能
发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,这篇文章主要为大家展示了"JSP如何实现文件上传功能",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JSP如何实现文件上传功能"这篇文章吧。一、准备部分需要
千家信息网最后更新 2024年10月21日JSP如何实现文件上传功能
这篇文章主要为大家展示了"JSP如何实现文件上传功能",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JSP如何实现文件上传功能"这篇文章吧。
一、准备部分
需要阿帕奇的fileupload.jar与io.jar包共同完成。构建完成路径后可继续。
资源地址
二、页面部分
注意:
1.文件上传必须要使用post,以避免用get方法时传输总量超过搜索框所能承载最大字符数。
2.必须加入enctype="multipart.form-data"字段
3.文件处需用"file"
三、Servlet部分
package webtest; import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List; import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;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.FileItemFactory;import org.apache.commons.fileupload.FileUploadBase;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class UploadServlet */@WebServlet("/UploadServlet")public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");// 请求编码处理,传输时 response.setCharacterEncoding("utf-8");// 响应编码处理,传输时 response.setContentType("utf-8");// 响应编码处理,显示时 boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断是否有entype="multipart/form-data"部分 if (isMultipart) { try { FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); //设置上传时的内存缓冲区大小,超出时写入临时文件 10kb ((DiskFileItemFactory) factory).setSizeThreshold(10240);//单位byte //设置临时文件目录,防止系统空间不足 ((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//动态获取Uploadtemp文件夹位于该项目中的位置 //控制上传单个文件的最大值 20kb upload.setSizeMax(20480);//单位byte Listitems = upload.parseRequest(request);// 解析form中的所有请求字段,并保存在item中 Iterator iter = items.iterator(); while (iter.hasNext()) { // 解析时无顺序,因此需根据名字查找 FileItem item = iter.next(); if (item.isFormField()) {//非文件数据 String itemName = item.getFieldName();//获取非文件的范围数据名 if (itemName.equals("sno")) { int sno = -1; sno = Integer.parseInt(item.getString("utf-8")); } else if (itemName.equals("sname")) { String sname = null; sname = item.getString("utf-8"); } else { System.out.println("其他字段..."); } } else {//文件上传 String fileName = item.getName();//获取文件范围数据。路径及其名称 //判断文件类型 String ext = fileName.substring(fileName.indexOf(".")+1); if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))) { System.out.println("仅支持png.gif,jpg类型文件"); return ; } String path = request.getSession().getServletContext().getRealPath("Upload");//动态获取Upload文件夹位于该项目中的位置 File file = new File(path,fileName); item.write(file);//定义上传路径,多为服务器路径 System.out.println(fileName+"上传成功"); } item.delete();//删除临时目录的文件 } } catch(FileUploadBase.SizeLimitExceededException e) { System.out.println("最大20KB"); } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
注:
1.若该处标红且鼠标悬停后未找到包,则可以使用"alt"+"/"组合键选择下图第一个类来导入。
2.由于若Upload与Uploadtemp文件存放于tomcat对应的项目下,每一次通过eclipse更新代码,会将eclipse下代码直接覆盖,因而两个文件夹会直接被覆盖掉。可以在eclipse中新建,或通过绝对/相对路径于其他文件夹中来设置。
3.临时文件中的数据会保留很短的时间,添加sleep让程序休眠也许可以看到。即使无item.delete(),在整个会话完成后,临时文件也会被删除。
4.若报错无法找到文件,请尝试用浏览器若谷歌进行操作,而不是用Eclipse自带的。
以上是"JSP如何实现文件上传功能"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
文件
路径
utf-8
数据
文件夹
部分
功能
最大
内容
字段
篇文章
编码
项目
传输
处理
代码
位置
动态
单位
目录
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全利与弊表格
cc java高级数据库
南昌立得软件开发有限公司
日本vps服务器
杭州边锋网络技术有限公司市值
网络安全建议信英语作文
游戏软件开发需要多少资金够用
湖北上门软件开发计划
康乐软件开发
数据库增加容量
实验室网络技术
人民共和国网络安全知识规定
天津河北网络技术培训
国民信息网络安全法
武昌理工学院网络技术
网络安全工程是干什么的
新疆软件开发硕士
同程亲和力旅游网络技术专员
数据库中创建表后怎么加外键
网络安全小卫士工作
江北ios软件开发工具
我的世界梦想堡垒服务器注册密码
网络安全追究什么刑事责任
知网+全文数据库
石家庄电脑服务器托管
网络安全产品推介会主持词
咸阳软件开发操作
互联网 科技服务 模式
淘乐网络技术有限公司 徐宁
网络系统与网络安全是网络工程吗