servlet中文件的上传与下载

Servlet实现文件上传的三种方法总结 主要介绍了Servlet实现文件上传的三种方法总结的相关资料,这里提供三种实例,帮助大家理解这部分内容,需要的朋友可以参考下 立即下载

文件的上传与下载,有三个前提:关于表单的type属性为File       其提交方式为post      enctype="multipart/form-data "     多部件上传

关于文件格式及大小的限制的JS代码如下所示:

		<script type="text/javascript">
			function fileChange(target) {
				//检测上传文件的类型 
				var imgName = document.all.up_file.value;
				var ext, idx;
				if(imgName == '') {
					document.all.submit_upload.disabled = true;
					alert("请选择需要上传的文件!");
					return;
				} else {
					idx = imgName.lastIndexOf(".");
					if(idx != -1) {
						ext = imgName.substr(idx + 1).toUpperCase();
						ext = ext.toLowerCase();
						// alert("ext="+ext);
						if(ext != 'zip' && ext != 'rar') {
							document.all.submit_upload.disabled = true;
							alert("只能上传.zip  .rar 类型的文件!");
							return;
						}
					} else {
						document.all.submit_upload.disabled = true;
						alert("只能上传.zip  .rar 类型的文件!");
						return;
					}
				}

				//检测上传文件的大小        
				var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
				var fileSize = 0;
				if(isIE && !target.files) {
					var filePath = target.value;
					var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
					var file = fileSystem.GetFile(filePath);
					fileSize = file.Size;
				} else {
					fileSize = target.files[0].size;
				}

				var size = fileSize / 1024 * 1024;

				if(size > (10*1024*1024)) {
					document.all.submit_upload.disabled = true;
					alert("文件大小不能超过10M");
				} else {
					document.all.submit_upload.disabled = false;
				}
			}
		</script>

下面部分为servlet中的代码,其代码如下

package com.itqf.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
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.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;

public class DealServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		
		//浏览器  -- 服务器  --> 本地磁盘
		//1.判断类型
		boolean is = ServletFileUpload.isMultipartContent(request);
		if (is) {
			//2.创建本地磁盘工厂
			DiskFileItemFactory factory = new DiskFileItemFactory();			
			File file = new File("c:\\workspace");			
			//设置缓存路径
			factory.setRepository(file);						
			//3.创建解析核心类
			ServletFileUpload upload = new ServletFileUpload(factory);			
			upload.setProgressListener(new ProgressListener() {				
				@Override
				public void update(long arg0, long arg1, int arg2) {
					// TODO Auto-generated method stub					
					System.out.println(arg0+"  -- "+arg1+" -- "+arg2);										
				}
			});			
			//解决上传中文文件名乱码问题			
			upload.setHeaderEncoding("UTF-8");			
        //	upload.setFileSizeMax();  //限制单个input 的大小
		//	upload.setSizeMax(1024*1024*10);  //限制表单中文件的总大小    1024*1024*1024 GB
			//在正常情况下,在HTML中利用JS设置上传文件格式及大小的限制			
			//4.解析请求
			try {
				List<FileItem>  items = upload.parseRequest(request);				
				//FileItem就是每一个input  
				//普通的文本input 还有一个 文件 input
				for (FileItem fileItem : items) {					
					if (fileItem.isFormField()) {
						//ture 普通的文本
						//name  value 
						String name = fileItem.getFieldName();
						String value = fileItem.getString("UTF-8");
						System.out.println(name+"  ---  "+ value);
					}else{
						//文件
						dealFile(fileItem);
					}	
				}				
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}			
		}
	}
	/**
	 * 处理文件input的
	 * @param fileItem
	 */
	private void dealFile(FileItem fileItem) {	
		//1.获取文件的名字
		 String filename = fileItem.getName();		
		 if (filename != null) {
			filename = FilenameUtils.getName(filename);
			 //c://xx/xx/i.jpg   = i.jpg  0
		    //filename= filename.substring(filename.lastIndexOf(File.separator)+1);
		}
		//2.文件保存的位置 		 
		 //1. 指定磁盘 
		 //2. 保存本项目下
		 ServletContext servletContext = getServletContext();		 
		 //获取时间
		 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");		 
		 String time = format.format(new Date());		 
		 //根据相对路径获取绝对路径
		 String path = servletContext.getRealPath("/WEB-INF/filedir/"+time);		 
		 System.out.println("文件夹的路径:"+path);
		 //创建保存的文件夹
		 File	dir = new File(path);		 
		 if (!dir.exists()) {
			dir.mkdirs(); //创建文件夹
		 }		 
		 //保证文件不重复
		 filename = UUID.randomUUID()+filename;		 
		// filename = System.currentTimeMillis()+filename;		 
		 //创建具体的文件
		 File file = new File(dir,filename);		 
		 try {
			 //写到指定的文件中
//			fileItem.write(file);
			 write(fileItem);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		 		
	}	
	public void  write(FileItem fileItem) throws IOException{		 
		 String filename = fileItem.getName();		
		 ServletContext servletContext = getServletContext();
		 //获取时间
		 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");		 
		 String time = format.format(new Date());		 
		 //根据相对路径获取绝对路径
		 String path = servletContext.getRealPath("/WEB-INF/filedir/"+time);
		 
		 System.out.println("文件夹的路径:"+path);
		 //创建保存的文件夹
		 File	dir = new File(path);
		 
		 if (!dir.exists()) {
			dir.mkdirs(); //创建文件夹
		 }		 
		 //保证文件不重复
		 filename = UUID.randomUUID()+filename;		 
		// filename = System.currentTimeMillis()+filename;		 
		 //创建具体的文件
		 File file = new File(dir,filename);				
		//得到文件内容的流
		InputStream inputStream = fileItem.getInputStream();		
		FileOutputStream fileOutputStream  =  new  FileOutputStream(file);
		
		byte [] buffer = new byte[1024];
		int len = -1;
		
		while((len = inputStream.read(buffer))!=-1){
			fileOutputStream.write(buffer, 0, len);
		}		
		fileOutputStream.close();
		inputStream.close();		
		fileItem.delete();		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		  doGet(request, response);
	}

}


SUMO使用教程(一) 本人的sumo视频入门课程,希望支持哦。https://edu.youkuaiyun.com/course/detail/25834 SUMO是一款交通仿真软件,其余可自行百度。教程一主要展示一下如何运行一个仿真实例。当然,这只是实现方法中的一种。 准备: 1.SUMO软件 2.osm地图文件 SUMO可去官网下载,解压后就可以使用,图形界面软是在解压后bin文件夹下的sumo-gui.exe。... 阅读详情

相关推荐

开关电源PCB安规设计避坑指南:从光耦开槽到变压器挡墙,这些细节决定认证成败

本文深入解析开关电源PCB安规设计中的关键细节,包括光耦开槽、变压器挡墙工艺等12个致命要点。通过实际案例和工艺参数表,揭示如何避免认证失败,特别强调爬电距离和电气间隙的精确控制,助力工程师提升产品安全性和认证通过率。

weixin_42548893的博客 204

java servlet 文件上传_Servlet 实现文件上传

Servlet 实现文件上传所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务器等等就是典型的文件上传。Servlet 3.0上次完成文件下载功能使用的是 Servlet 2.5,但是想要完成文件上传,那么继续使用 Servlet 2.5 肯定不是一个好的选择,因此我们使用 Servlet 3.0 来完成文件上传。下面我来简单介绍一下 ...

weixin_30979229的博客 876

IIR数字滤波器原理,设计方法及嵌入式应用

基于STM32的二阶直接II型巴特沃斯低通滤波器设计方法及应用

weixin_38342580的博客 1万+

Servlet实现文件上传下载

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

quliuwuyiz的博客 7887

微信自动化进阶:Python识别特定消息并自动回复(基于win32api控件操作)

本文详细介绍了如何使用Python和win32api实现微信消息的智能监控与自动回复。通过精准识别聊天记录中的特定关键词,结合多级匹配策略和性能优化技巧,构建稳定高效的自动化回复系统,适用于企业客服、个人助手等场景。

weixin_42663213的博客 441

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1011

Servlet实现文件上传和下载

文件的上传 表单的设置 设置表单的enctype,提交方式必须为post &amp;lt;form action=&quot;up&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&amp;gt; &amp;lt;input type=&quot;file&quot; name=&quot;myfi

铁甲依然在! 3万+

App渗透 - 人脸识别登录绕过

一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'...

渗透测试研究中心 2826

使用servlet保存用户上传的文件到本地

原文地址:http://blog.youkuaiyun.com/shuwei003/article/details/6742332 upload.jsp [plain] view plaincopy fbysss UploadBean 示例 附件 web.xml [plain] vie...

dalaoshu321的博客 804

Matlab/simulink频率响应分析方法

Matlab/Simulink仿真系列问题一.电气模块与信号模块 一.电气模块与信号模块

virtuoso~晓晓 3万+

【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形

本文介绍了在Unity中使用Navigation导航系统和LineRenderer实现3D人物寻路轨迹预测效果的方法。通过NavMesh.CalculatePath计算路径点,结合Physics.Raycast进行地面点投射,将路径点赋予LineRenderer渲染出移动轨迹。关键点包括:1)利用NavMesh.CalculatePath计算两点间可行走路径;2)通过射线检测获取地面点提高路径适配性;3)使用协程定期更新路径绘制。文章还提供了完整代码实现,并说明需要将地面图层设置为Ground并进行导航网格

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 459

用JSP+servlet实现文件的上传与下载

现在看来使用JSP+Servlet实现文件的上传与下载已经是有些落后了,现在能很方便实现文件的上传与下载插件和工具有很多,常用的有SmartUpload插件、Struts2框架以及富文本编辑器等等。但是作为一个合格的程序员,我认为还是有必要了解一下使用JSP+Servlet最原始的读取文件流来实现文件的上传与下载。下面我简单讲下!

邓威的博客 2万+

Python赋能,洞见先机:构建基于异步爬虫与流处理的实时舆情监控系统

我们将从核心概念入手,逐步搭建一个集。.option("es.resource", "public-opinion-%s" % time.strftime("%Y-%m-%d")) \ # 按日期分索引。| 数据采集层 |----->| 消息队列层 |----->| 流处理与分析层 |----->| 存储与可视化层 |:使用Spark Streaming的状态操作或Flink的CEP库,检测更复杂的模式,如“某关键词的负面舆情在1小时内激增500%”。

2201_76125261的博客 434

Servlet的文件上传下载

如果上传的文件比较小,将直接保存在内存中,如果上传的文件比较大,则会以临时文件的形式,保存在磁盘的临时文件夹中。当浏览器通过表单提交上传文件时,文件数据都附带在HTTP请求消息体中,并且采用MIME类型(多用途互联网邮件扩展类型)进行描述,在后台可以使用request对象提供的getInputStream()方法读取客户端提交过来的数据。由于大多数文件的上传都是通过表单的形式提交给服务器的,因此,要想在程序中实现文件上传功能,首先要创建一个用于提交上传文件的表单页面。启动项目,选择文件进行上传。

qq_40210639的博客 919

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【JavaWeb】]Servlet实现文件上传与下载

Servlet实现文件的上传与下载

CoderX(远离Bug)的博客 4350

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【JavaWeb】Servlet实现上传和下载文件的功能

本文主要讲述了,如何以JavaWeb在网页中实现文件的上传下载功能,已有相当基础全面的代码和步骤讲解,在文末也提供了相关源码资源供大家参考。

peng_YuJun的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

servlet文件上传下载_Servlet上传文件和下载文件示例

servlet文件上传下载 Java Web应用程序中的文件上载和下载以及常见任务。 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例。 用例 我们的用例是提供一个简单HTML页面,客户端可以在其中选择要上传到服务器的本地文件。 在提交上传文件的请求后,我们的Servlet程序会将文件上传到服务器中的目录中,然后提供URL,...

最佳 Java 编程 264

Servlet文件的上传与下载

文件的上传与下载: 在上网的时候我们常常遇到文件上传的情况,例如上传头像、上传资料等; 当然除了上传,遇见下载的情况就更多了,接下来看看我们 servlet 中怎么实现 文件的上传和下载。下面我们使用 commons-fileupload 来做文件上传. 1 文件上传: 文件上传涉及到前台页面的编写以及后台服务端代码的编写,前台发送文件,后台接受并保存文件,这才是一哥哥完整的文件上传。 前台页面:...

TaiYangb的博客 1225

原生Servlet文件上传和下载Servlet多个文件上传 Servlet文件下载 Servlet下载文件

原生Servlet文件上传和下载Servlet多个文件上传Servlet文件下载 Servlet下载文件 一、前端 html 代码 <center> <h2> 基于servelt 3.0注解实现文件上传 </h2> <h3>1、单个文件上传</h3> <form action="${ctx ...

HaHa_Sir的博客 3495

Servlet实现文件的上传和下载

从Servlet 3开始,文件上传变得简单许多。 文件的上传: import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http

weixin_43977265的博客 595

基于Servlet实现上传和下载文件

基于servlet可以实现前后端分离,前端的html页面中可以用form表单,后端可以在service方法中实现上传与下载

sss1513的博客 986

servlet的文件上传和下载

servlet的文件上传和下载 1.准备工作和前提条件 ide工具使用的是eclipse(自我感觉eclipse建普通的servlet的项目比idea简洁轻便) 使用tomcat版本是7 使用的servlet是2.5(建议使用这个版本,是xml配置版本) 2.新建上传文件的文件夹 在webcontent目录下新建文件夹uploadFile 这个文件夹测试文件上传和下载的文件夹 3.导入相关的依赖 commons-fileupload-1.2.1.jar commons-io-1.4.jar

java技术博客 433

servlet文件下载及上传

servlet文件下载 import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe.

允诺@晴天的博客 2305

Servlet的文件上传与下载

response.setContentType(application.getMimeType("a.jpg")) response.setHeadr("Content-Disposition","attachment;filename="+filename) 上传需要满足的条件 form enctype="mulltipart/form-data" method="post" type="file" 后台流程 工厂 解析器 解析request 遍历

qq_44258918的博客 183

Servlet文件上传和下载

Servlet文件上传和下载 servlet文件上传 实现步骤 引入的 jar 文件:commons-fileupload-1.3.2、commons-io-2.5.jar http://commons.apache.org/proper/commons-fileupload/ 下载 http://commons.apache.org/proper/commons-io/ 下载 编

f_junhao的博客 687
上一篇: 利用java语言查询数据库的工具类
下一篇: Hibernate框架(一)
XXSession
博客等级 码龄9年 10粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值