分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

jsp使用servlet实现文件上传

发布时间:2023-09-06 01:11责任编辑:白小东关键词:jsjsp文件上传

1.在index.jsp中写入以下代码

<form method="post" action="demo3" enctype="multipart/form-data"> ???选择一个文件: ???<input type="file" name="uploadFile"/> ???<br/><br/> ???<input type="submit" value="上传"/></form>

2.在src中创建ServletDemo3类

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;//此三个包为 正常包以外 额外需要下载导入
public class ServletDemo3 extends HttpServlet { ???private static final long serialVersionUID = 1L; ???// 上传文件存储目录 ???private static final String UPLOAD_DIRECTORY = "upload"; ???// 上传配置 ???private static final int MEMORY_THRESHOLD ??= 1024 * 1024 * 3; ?// 3MB ???private static final int MAX_FILE_SIZE ?????= 1024 * 1024 * 40; // 40MB ???private static final int MAX_REQUEST_SIZE ??= 1024 * 1024 * 50; // 50MB ???/** ????* 上传数据及保存文件 ????*/ ???protected void doPost(HttpServletRequest request, ?????????????????????????HttpServletResponse response) throws ServletException, IOException { ???????// 检测是否为多媒体上传 ???????if (!ServletFileUpload.isMultipartContent(request)) { ???????????// 如果不是则停止 ???????????PrintWriter writer = response.getWriter(); ???????????writer.println("Error: 表单必须包含 enctype=multipart/form-data"); ???????????writer.flush(); ???????????return; ???????} ???????// 配置上传参数 ???????DiskFileItemFactory factory = new DiskFileItemFactory(); ???????// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中 ???????factory.setSizeThreshold(MEMORY_THRESHOLD); ???????// 设置临时存储目录 ???????factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); ???????ServletFileUpload upload = new ServletFileUpload(factory); ???????// 设置最大文件上传值 ???????upload.setFileSizeMax(MAX_FILE_SIZE); ???????// 设置最大请求值 (包含文件和表单数据) ???????upload.setSizeMax(MAX_REQUEST_SIZE); ???????// 中文处理 ???????upload.setHeaderEncoding("UTF-8"); ???????// 构造临时路径来存储上传的文件 ???????// 这个路径相对当前应用的目录 ???????String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY; ???????// 如果目录不存在则创建 ???????File uploadDir = new File(uploadPath); ???????if (!uploadDir.exists()) { ???????????uploadDir.mkdir(); ???????} ???????try { ???????????// 解析请求的内容提取文件数据 ???????????@SuppressWarnings("unchecked") ???????????List<FileItem> formItems = upload.parseRequest(request); ???????????if (formItems != null && formItems.size() > 0) { ???????????????// 迭代表单数据 ???????????????for (FileItem item : formItems) { ???????????????????// 处理不在表单中的字段 ???????????????????if (!item.isFormField()) { ???????????????????????String fileName = new File(item.getName()).getName(); ???????????????????????String filePath = uploadPath + File.separator + fileName; ???????????????????????File storeFile = new File(filePath); ???????????????????????// 在控制台输出文件的上传路径 ???????????????????????System.out.println(filePath); ???????????????????????// 保存文件到硬盘 ???????????????????????item.write(storeFile); ???????????????????????request.setAttribute("message", ???????????????????????????????"文件上传成功!"); ???????????????????} ???????????????} ???????????} ???????} catch (Exception ex) { ???????????request.setAttribute("message", ???????????????????"错误信息: " + ex.getMessage()); ???????} ???????// 跳转到 message.jsp ???????request.getServletContext().getRequestDispatcher("/message.jsp").forward( ???????????????request, response); ???} ???}

3.在WEB-INF进行配置文件

 ???<servlet> ???????<servlet-name>servletDemo3</servlet-name> ???????<servlet-class>com.neunb.servlet.ServletDemo3</servlet-class> ???</servlet> ???<servlet-mapping> ???????<servlet-name>servletDemo3</servlet-name> ???????<url-pattern>/demo3</url-pattern> ???</servlet-mapping>

4.创建message.jsp 显示上传结果

<html><head> ???<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ???<title>文件上传结果</title></head><body> ???<h2>${message}</h2></body></html>

5.上传文件运行结果

jsp使用servlet实现文件上传

原文地址:http://www.cnblogs.com/coderL/p/7522431.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved