java ee 上传文件_17.《JavaEE 学习笔记》Servlet 上传文件

功能介绍:

利用 Servlet 和表单提交,选择本地文件上传到服务器。上传的文件可以是文本文件或图像文件或任何文档,不能是文件夹。

需要引入的 jar 文件:commons-fileupload-1.3.2、commons-io-2.5.jar。

下载链接:

将下载好的jar包复制到项目/WebContent/WEB-INF/lib 文件夹下:

实现代码:

fileUpload.jsp:文件上传的界面页

pageEncoding="UTF-8"%>

文件上传

文件上传

选择一个文件:

FileUploadServlet.java:文件上传处理

package com.company.project.servlet.fileupload;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

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.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

@WebServlet("/file-upload-servlet")

public class FileUploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

// 文件上传的存储路径private static final String SAVE_PATH = "file-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

public FileUploadServlet() {

super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 检测是否为多媒体文件if (!ServletFileUpload.isMultipartContent(request)) {

// 如果不是则停止PrintWriter out = response.getWriter();

out.println("表单必须包含 enctype=multipart/form-data");

out.flush();

out.close();

return;

}

// 配置上传参数DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中factory.setSizeThreshold(MEMORY_THRESHOLD);

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 + SAVE_PATH;

// 如果路径不存在则创建File uploadDir = new File(uploadPath);

if (!uploadDir.exists()) {

uploadDir.mkdir();

}

try {

@SuppressWarnings("unchecked")

List formItems = upload.parseRequest(request);

if (formItems != null && formItems.size() > 0) {

//迭代表单数据for (FileItem fileItem : formItems) {

//处理不在表单的字段if(!fileItem.isFormField()) {

String fileName = new File(fileItem.getName()).getName();

String filePath = uploadPath + File.separator + fileName;

File storeFile = new File(filePath);

// 在控制台输出文件的上传路径 System.out.println(filePath);

// 保存文件到硬盘 fileItem.write(storeFile);

request.setAttribute("message",

"文件上传成功!");

}

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch blocke.printStackTrace();

} catch (Exception e) {

request.setAttribute("message",

"错误信息: " + e.getMessage());

}

//文件上传完成跳转request.getServletContext().getRequestDispatcher("/page/UploadMes.jsp").forward(request, response);

}

}

UploadMes.jsp:文件传输完成跳转页

pageEncoding="UTF-8"%>

文件上传结果

${message }

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spark python 上传代码包_使用 Livy Rest API 提交 spark 批量任务 (jar,Python, streaming)...

Livy是一个开源的REST 接口,用于与Spark进行交互,它同时支持提交执行代码段和完整的程序。image.pngLivy封装了spark-submit并支持远端执行。启动服务器执行以下命令,启动livy服务器。./bin/livy-server这里假设spark使用yarn模式&#xff0c…

java中可以改变引用的指向吗_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...

大家讲道理2017-04-17 15:30:345楼是时候展现一下我的JAVA基础知识了,2333。我按照执行顺序给你写注释好了。Person p1 new Person(10);//创建了一个对象//p1.age10;modify(p1);//modify函数传参,创建了一个在modify函数里面的局部变量p//你应该明白p是…

qpython3怎样安notebook_Windows下基于Python3安装Ipython Notebook(即Jupyter)。python –m pip install XXX...

1、安装Python3.x,注意修改环境变量path(追加上python安装目录,如:D:\Program Files\Python\Python36-32)2、查看当前安装的第三方包:python –m pip list3、安装IPython:python –m pip install ipython[all]4、安装其…

java 循环查询list_Java用list储存,遍历,查询指定信息过程详解

需求说明实现思路见代码注释代码内容使用list储存,遍历,查询,删除import java.util.ArrayList;import java.util.List;/*** auther::9527* Description: 第七题* program: 多线程* create: 2019-08-09 23:39*/public class Sevent…

python教学视频a_2019何老师一个月带你玩转Python分布式爬虫实战教程视频(视频+源码)...

├─章节1-爬虫前奏(官网免费)│001.爬虫前奏_什么是网络爬虫.mp4│002.爬虫前奏_HTTP协议介绍.mp4│003.爬虫前奏_抓包工具的使用网络请求.mp4│├─章节2-网络请求│1_urlopen函数用法.mp4│2_urlretrieve函数用法.mp4│3_参数编码和解码函数.mp4│4urlparse和urlsplit函数用…

mysql 主从二进制日志_Mysql-8 配置主从复制(基于二进制日志)

1. 实验环境SystemIPHostCentOS 7.4.1708192.168.100.101masterCentOS 7.4.1708192.168.100.102slave2. 安装MySQL83. 配置主从复制要想将主节点配置为使用基于二进制日志的复制,必须确保启用了二进制日志记录,并建立唯一的服务器ID[rootmaster ~]# cat …

python循环10次1001python循环10次_Python循环题怎么做?

知乎视频​www.zhihu.com虽然这题目很简单, 穷举的运算量很小, 但是最好还是要动点脑筋, 这样才有乐趣.二位数 三位数 四位数很明显, 这个三位数是9开头的, 又因为是回文数, 那么这个三位数是"9a9", 其中a是未知数.很明显, 这个四位数的1开头的, 又因为是回文数, 那…

java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理

1 学习多线程知识的根本目标多线程知识的根本目标是:设计稳健的并发程序。当然,本文无法回答这个实践性很强的问题(这与具体的业务相关,涉及到具体的策略),本文主要阐述相关知识之间的关系,希望初学者不要迷失在多线程…

低代码开发平台_低代码开发平台系列:6、低代码是编程技术发展大势所趋

一、低代码是一种编程技术低代码是快速开发工具/技术的一种,属于软件开发/编程工具/技术领域,主要应用于企业软件开发领域。借助低代码工具,使用者无需编码即可实现企业软件系统常见功能的交付;少量编码扩展更多功能,相…

acm教程 java版_ACM之java速成 (转)

//这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目。//1. 输入:// 格式为:Scanner cin new Scanner (…

python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

简单介绍下python Django框架的历史,设计理念及优势Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计。Django可以更容易地快速构建更好的Web应用程序,并且它使用更少的代码。注意 − Django是Dj…

abnf java实现_详细讲解如何利用Java实现组合式解析器?

简介:Ward Cunningham 曾经说过,干净的代码清晰地表达了代码编写者所 想要表达的东西,而优美的代码则更进一步,优美的代码看起来就像是专门为了 要解决的问题而存在的。在本文中,我们将展示一个组合式解析器的设计、实…

充电原理_电动汽车充电桩如何设置?充电桩原理介绍

随着新能源产业的蓬勃发展,电动汽车在生活中变得越来越普遍。比亚迪(BYD),宝马(BMW)和特斯拉(Tesla)等汽车制造商都已经推出了全电动汽车,而混合动力汽车则更为普遍。为了能够方便地为这些电动汽车的电池充电,必须建立充电桩。充电…

GUI动画演示java_java – 使用JFrame的简单GUI动画

我覆盖了JFrame中的setVisible()函数.它所做的只是不断增长框架或缩小框架,直到它达到我想要的尺寸.这使得一个简单的动画.我的问题是,它是不稳定的,不平滑的,如果移动框架不能很好地工作.有没有办法可以做到更干净,更流畅,更光滑?/*** Sets this window visible an…

python 抽奖器_如何基于python实现年会抽奖工具

用python来实现一个抽奖程序,供大家参考,具体内容如下主要功能有1.从一个csv文件中读入所有员工工号2.将这些工号初始到一个列表中3.用random模块下的choice函数来随机选择列表中的一个工号4.抽到的奖项的工号要从列表中进行删除,以免再次抽到…

java 获取服务器硬件_dell服务器远程获取硬件状态

以dell的R620型号的服务器做的测试登陆上dell服务器ilo的IP地址,首先打开ipmi,ilo2是直接支持ipmi2.0的此框需要点击 “IDRAC设置”->“网络”->“IPMI设置”在”启用LAN上IPMI“后的复选框打钩,才能启动ipmi好像是内置到了ilo2&#x…

简单可行性报告模板_项目可行性报告模板分享!第三章主要内容

项目可行性报告模板分享!第三章主要内容如下:第三章 市场分析与建设规模市场分析在可行性研究中的重要地位在于,任何一个项目,其生产规模的确定、技术的选择、投资估算甚至厂址的选择,都必须在市场需求情况有了充分的了解后才能解…

java外挂源码_2.7 万 Star!Github 项目源码辅助阅读神器

【导语】:一款用于将 Github 项目代码以树形格式展示的浏览器插件。简介大家平时逛 GitHub 是否会觉得查看源代码的体验十分糟糕?项目文件需要一层层点击,返回也要一层层返回。这样不直观,也比较麻烦。Octotree 是一款辅助阅读 Gi…

php把时间戳转换成字符串,php中将时间差转换为字符串提示的实现代码

如微博这看起来更加人性化,好吧,上代码class timeAgo{static $timeagoObject;private $rustle;private $unit;private function __construct(){}private function __clone(){ }public static function getObject(){if(! (self::$timeagoObject instanceo…

php教育网站设计案例_酒店装修,精品酒店设计装修案例,酒店设计网站

酒店设计需要考虑:设计酒店的时候也要顺应市场潮流,不再单一的提供休息、洗漱、睡觉的空间,还要能提供社交、商务等功能,同顾客产生情况共鸣。这样能够引领生活方式的、能够互动,有仪式感的酒店,是很吸引人…