JSP如何实现文件上传功能
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要为大家展示了"JSP如何实现文件上传功能",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JSP如何实现文件上传功能"这篇文章吧。一、准备部分需要
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
三维视频软件开发
网络安全检查资料
web软件开发规范
erp软件开发需求
台式电脑怎样无线连接服务器
wow哪个服务器
齐向东网络安全合作
苏州大型软件开发价格多少
绘图和软件开发哪个更厉害
成都大数据软件开发报价
外汇天眼的云服务器好用吗
网络安全防护教育知识
玉溪网络技术服务
数据库工具压缩包
榆林精益管理软件开发
软件开发的三大结构
国家第二网络安全产业园
北京计算机软件开发学校
条形码信息识别并写入数据库
未来20年服务器存储信息
哪些公司是需要进行服务器托管的
数据库创新和维护的心得体会
校园网络安全日主题班会
崇明区参考数据库销售服务电话
人社局网络安全预案
看数据库64还是32
linux查看服务器硬件时钟
panabit缓存服务器
服务器带宽查询
爱丽云服务器支持的并发数