JavaWeb 文件上传和下载

JavaWeb的文件上传和下载 一、学习目标 文件上传相关API (1)Fileltem接口 (2)DiskFileltemFactory类 (3)ServletFieltemFactory类 文件下载 (1)实现文件下载 (2)解决下载文件中文文件乱码 二、重点知识 要实现Web开发中的文件上传功能,通常需完成两步操作:一是在Web页面中添加上传输入项:二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。接下来,本节将对这两步操作内容进行详细讲解。 由于大多数文件的.上传都是通过表单的形式提交给服务器的,因此, 阅读详情

JavaWeb 文件上传和下载
首先去apache官网下载commons-io.jar和commons-fileupload.jar,下载后导入到项目中去
apache官网都有相关文档,左侧的user guide 有关于上传下载实现的相关代码

upload.html
enctype="multipart/form-data"必须加上

<form action="uploadServlet?action=upload" method="post" enctype="multipart/form-data">
			<input type="file" name="filename" id="filename"/><br/>
			<input type="submit"/>
	</form>

uploadServlet.java

public class UploadServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		String action = req.getParameter("action");
		ServletContext servletContext = null;
		String realPath = null;  //图片文件夹路径
		PrintWriter pw = null;
		switch(action) {
		//文件上传
		case "upload":
			DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
			//配置临时存储库
			servletContext = this.getServletConfig().getServletContext();
			File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
			diskFileItemFactory.setRepository(repository);
			//创建文件上传程序对象
			ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
			List<FileItem> items = null;
			try {
				//解析request发送的请求
				items = upload.parseRequest(req);
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Iterator<FileItem> iterator = items.iterator();
			while(iterator.hasNext()) {
				FileItem item = iterator.next();
				if(item.isFormField()) {
					//表单内容
				}else {
					//表单文件流内容
					String fieldName = item.getFieldName();
					String fileName = item.getName();
					String contextType = item.getContentType();
					//判断item是否在内存中
					boolean isInMemory = item.isInMemory();
					//获取item的大小
					long sizeInBytes = item.getSize();
					//系统毫秒数作每个文件的唯一标识符
					long seconds = System.currentTimeMillis();
					//获取文件后缀名
					String fileType = fileName.substring(fileName.lastIndexOf('.'), fileName.length());
					//设置文件上传的位置
					//servletContext.getRealPah() 获取服务器上真实绝对路径
					//通过系统时间生成唯一的文件名,存储在up文件夹下
					String FileWay = servletContext.getRealPath("/up/")+seconds+fileType;
					File uploadFile = new File(FileWay);
					try {
						//将文件上传至指定文件夹
						item.write(uploadFile); 
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
 				}
			}
			break;
		//文件下载
		case "download":
			String filename = req.getParameter("filename");
			System.out.println(filename);
			//下载文件保存到本地的名称
			resp.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));
			OutputStream outputStream = resp.getOutputStream();
			servletContext = this.getServletContext();
			String realpath = servletContext.getRealPath("/");
			//filename要和tomcat中上传文件夹中的文件名保持一致,否则会出现FileNotFoundException
			FileInputStream fileInputStream = new FileInputStream(realpath+filename);
			byte[] b = new byte[1024];
			int i;
			while((i=fileInputStream.read(b,0,b.length))!= -1) {
				outputStream.write(b);
				b = new byte[1024];
			}
			fileInputStream.close();
			outputStream.flush();
			outputStream.close();
			break;
		default:
			break;
		}
	}
}

注意:上传文件是使用的是文件在本地的绝对路径,下载文件时使用的是文件在服务器中的相对路径,文件存储在tomcat服务器中的一个文件夹中而不是项目中的文件夹,访问该文件夹可以通过servletContext.getRealPah() 获取服务器上真实绝对路径

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化 本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。 阅读详情

相关推荐

全能扫描王的实现(python版本)- 目标检测图像矫正

全能扫描王python代码实现,可用于文件扫描或者是图像校正

搬砖猛女的啃书历程 5490

上传图片到tomcat服务器(tomcat7-maven-plugin)

本来比较好的做法是将图片上传到图片服务器(nginx),但nginx主要用在linux平台,由于客观原因暂不考虑。然后想到的是设置tomcat服务器虚拟路径,服务器路径映射到本地磁盘路径,将图片上传到本地磁盘中。但是项目中tomcat是以插件的形式内嵌到maven中(pom文件依赖tomcat7-maven-plugin),没有找到设置虚拟路径的方法,于是退而求其次,将图片上传到tomcat服务器

cfp008的博客 3136

大学生数学建模赛题解析及优秀论文-2021电工杯A题高铁牵引供电系统运行数据分析及等值建模(附Python代码)

我国是世界上电气化铁路运营里程最长、服役电力机车型号最多、运营最 繁忙的国家。截至 2020年底,我国铁路年消耗电量约800亿千瓦时,约占三峡 年总发电量的 80%。图1为高速铁路牵引供电系统示意图,主要包括牵引变电所、牵引网和动车 组。牵引变电所将 220kV三相电压转换为满足电力机车运行的27.5kV单相电压, 其核心元件是牵引变压器。牵引网由馈线、接触网、钢轨、回流线等组成,完成 对电力机车的送电任务。...

wenyusuran的专栏 3169

Servlet In Web Application

Servlet In Web Application HttpServlet的执行步骤:1.       容器收到调用请求的时候,先调用HttpServlet的service()方法;2.       如果HttpServlet的service()方法没有被重写,那么就调用Servlet的service()方法,3.       这个方法中,会根据requerst head中的

吉的专栏 1377

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1631

ADS基础教程24 - Gerber文件的导入

一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END!

XZ_ZC的博客 3054

Javaweb 文件上传和下载

以上示例展示了如何借助 Apache Commons FileUpload 和 Commons IO 实现一个简洁版的文件上传与下载功能。虽然该实现相对基础,仍有许多可以优化和增强的空间,但它对于理解文件上传下载的核心流程与底层机制具有重要价值。通过这一案例,我们不仅掌握了表单数据的解析、文件流的处理等关键步骤,也为今后使用更高级的框架(如 Spring Boot 中的 Multipart 处理)以及集成第三方对象存储服务(如阿里云 OSS 或 MinIO)打下了扎实的基础。

weixin_43415514的博客 1859

军品研制过程-转阶段

介绍军品转阶段评审

Abel的博客 2万+

javaweb —— ——文件上传和下载

javaweb —— ——文件上传和下载 文章目录javaweb —— ——文件上传和下载一、如何实现文件上传二、文件上传的相关API1. Fileltem 接口2. DiskFileltemFactory 类3.ServletFileUpload 类实现文件上传实现文件下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需完成两步操作: -是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。接下来,本节将对这两步操作内容进行详细讲解。 由于大多数

weixin_54405545的博客 1849

海康威视 2024届 数字逻辑设计 实习笔试分析

记录一下 5月11日晚,做的海康威视的一场笔试。分享给需要的IC人。 岗位:数字逻辑设计工程师(浙江 杭州) 转载需要本人同意! 我的见解不一定都是准确的,欢迎评论区交流指正~~

记录所学,分享知识,结识挚友 1万+

第四部分:VTK常用类详解(第96章 vtkCaptionActor2D标题演员类)

VTK标题演员实现3D场景标注功能 摘要:vtkCaptionActor2D是VTK可视化工具包中的标题标注组件,提供混合2D/3D的文本标注功能。该组件通过连接线将文本标注与场景中的3D点关联,支持多行文本显示、自定义文本样式和动态定位。文章详细介绍了标题演员的设计原理、坐标系统控制方法、文本内容管理和大小自适应机制,并展示了在3D模型标注、数据可视化和交互场景中的典型应用。标题演员通过组合文本、边框和连接线组件,实现了灵活多样的场景标注方案,是科学计算可视化中重要的标注工具。

仰望星空的博客 255

JavaWeb——文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上...

zhangyuliang6430的博客 194

SAP Single Sign-On 全景指南:从传统 SAP SSO 到 SAP Secure Login Service for SAP GUI 的架构、场景与迁移实践

本文系统梳理了SAP生态下的单点登录技术方案,重点分析了SAP GUI的云化替代方案SAP Secure Login Service(SLS)。内容涵盖SNC、Kerberos/SPNEGO、SAML 2.0等核心协议的技术实现,对比了传统SAP SSO与新型SLS for SAP GUI的架构差异,并给出AS ABAP系统的具体实施路径。针对SAP GUI访问、浏览器访问Fiori/移动端等不同场景,提供了详细的协议选型建议和配置指南,帮助团队构建安全可靠且适应云时代的统一认证体系。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

JavaWeb文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功

克豪的博客 479

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【文件上传和下载教科书】JavaWeb文件上传和下载技术总结

文章目录@[toc]前言一、文件上传1.1 文件上传的核心思想1.2 文件上传中JSP的三要素1.3 上传文件核心jar包1.4 文件上传的细节处理1.4.1 文件名重复覆盖问题1.4.2 使用目录分离算法存储文件1.4.3 文件上传jar包API二、文件下载2.1 文件下载的核心思想2.2 文件下载的两种格式2.3 手动编写代码方式的三要素2.4 文件下载的细节处理2.4.1 解决下载文件后名称...

奈何的人生 1404

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

javaweb文件上传和下载

javaweb文件上传 导入两个包 moven配置 <dependency> <groupId>org.zenframework.z8.dependencies.commons</groupId> <artifactId>commons-fileupload-1.3.1</artifactId> <version>2.0</version> </dependency>

m0_45897758的博客 170

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JAVAWEB之文件上传和下载

对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参 数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上 传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts...

azz8030的博客 178

【Java】JavaWeb文件上传和下载

文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件

w36680130的博客 294

JavaWeb中的文件上传和下载功能的实现

导入相关支持jar包:commons-fileupload.jar,commons-io.jar 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以...

weixin_33937913的博客 252

Javaweb-文件上传和下载

javaweb(第十二章) 一、 很多的应用都为用户提供了文件的上传和下载的功能,例如,图片的上传与下载、邮件附件的上传与下载等 1)如何实现文件上传 要实现Web开发中的文件上传功能,通常需完成两步操作:一是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中 由于大多数文件的上传都是通过表单的形式提交给服务器的,因此,要想在程序中实现文件上传的功能,首先要创建一个用于提交上传文件的表单页面。在页面中,需要使用sipply type="file”>标签在Web页

qq_53749424的博客 449

JavaWeb文件上传和下载FTP

前言 javaweb文件上传,目前我接触到的是上传到专门文件服务器和保存到本地两种。传统项目单机应用(只部署到一个tomcat下)保存文件就是直接保存到tomcat的某个文件夹下面。到后来接触到分布式,或者说一个应用要做负载均衡的时候,就需要单独的服务器来保存文件(为什么需要,如果文件直接保存到tomcat中,用户访问到的tomcat是随机的,就会出现可能访问到也有可能访问不到自己传上去的文件),...

ALearrring的博客 1317

JavaWeb学习总结——文件上传和下载

JavaWeb学习总结——文件上传和下载   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。   对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileuplo

u014352080的专栏 620
上一篇: Java语言实现简单的堆排序
下一篇: Java语言实现快速排序
钮祜禄氏·哆啦A栋
博客等级 码龄10年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值