`
仍唱我的歌
  • 浏览: 5569 次
  • 来自: 贵阳
社区版块
存档分类
最新评论

Servlet上传文件服务器端代码

阅读更多
/**
	 * 
	 * @author Administrator
	 * 文件上传
	 * 具体步骤:
	 * 1)获得磁盘文件条目工厂 DiskFileItemFactory 要导包
	 * 2) 利用 request 获取 真实路径 ,供临时文件存储,和 最终文件存储 ,这两个存储位置可不同,也可相同
	 * 3)对 DiskFileItemFactory 对象设置一些 属性
	 * 4)高水平的API文件上传处理  ServletFileUpload upload = new ServletFileUpload(factory);
	 * 目的是调用 parseRequest(request)方法  获得 FileItem 集合list ,
	 *     
	 * 5)在 FileItem 对象中 获取信息,   遍历, 判断 表单提交过来的信息 是否是 普通文本信息  另做处理
	 * 6)
	 *    第一种. 用第三方 提供的  item.write( new File(path,filename) );  直接写到磁盘上
	 *    第二种. 手动处理  
	 *
	 */
	
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println(LoginServlet.this.getClass().getSimpleName() + "===doPost");
		request.setCharacterEncoding("utf-8");	//设置编码
		
		//获得磁盘文件条目工厂
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//获取文件需要上传到的路径
		String path = request.getServletContext().getRealPath("/upload");
		
		//如果没以下两行设置的话,上传大的 文件 会占用 很多内存,
		//设置暂时存放的 存储室 , 这个存储室,可以和 最终存储文件 的目录不同
		/**
		 * 原理 它是先存到 暂时存储室,然后在真正写到 对应目录的硬盘上, 
		 * 按理来说 当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的 
		 * 然后再将其真正写到 对应目录的硬盘上
		 */
		factory.setRepository(new File(path));
		//设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室
		factory.setSizeThreshold(1024*1024) ;
		
		//高水平的API文件上传处理
		ServletFileUpload upload = new ServletFileUpload(factory);
		
		
		try {
			//可以上传多个文件
			List<FileItem> list = (List<FileItem>)upload.parseRequest(request);
			
			for(FileItem item : list)
			{
				//获取表单的属性名字
				String name = item.getFieldName();
				
				//如果获取的 表单信息是普通的 文本 信息
				if(item.isFormField())
				{					
					//获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的
					String value = item.getString() ;
					
//					request.setAttribute(name, value);
					System.out.println("name----" + name + "----value:" + value); 
				}
				//对传入的非 简单的字符串进行处理 ,比如说二进制的 图片,电影这些
				else
				{
					/**
					 * 以下三步,主要获取 上传文件的名字
					 */
					//获取路径名
					String value = item.getName() ;
					//索引到最后一个反斜杠
					int start = value.lastIndexOf("\\");
					//截取 上传文件的 字符串名字,加1是 去掉反斜杠,
					String filename = value.substring(start+1);
					
//					request.setAttribute(name, filename);
					System.out.println("filename----" + filename + "----value:" + value); 
					
					//真正写到磁盘上
					//它抛出的异常 用exception 捕捉
					
					item.write(new File(path,filename) );//第三方提供的
					
////					手动写的
//					OutputStream out = new FileOutputStream(new File(path,filename));
//					
//					InputStream in = item.getInputStream() ;
//					
//					int length = 0 ;
//					byte [] buf = new byte[1024] ;
//					
//					System.out.println("获取上传文件的总共的容量:"+item.getSize());
//
////					 in.read(buf) 每次读到的数据存放在   buf 数组中
//					while( (length = in.read(buf) ) != -1)
//					{
//						//在   buf 数组中 取出数据 写到 (输出流)磁盘上
//						out.write(buf, 0, length);
//					    
//					}
//					
//					in.close();
//					out.close();
				}
			}
			
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
		catch (Exception e) {
			e.printStackTrace();
		} 
		
		response.getWriter().write(new String("上传成功!"));
	}
PS:需要的两个工具类在附件里面

 

分享到:
评论

相关推荐

    java实现利用HTTP基于servlet上传文件至服务器.pdf

    Servlet 是 Java 语言中的一种服务器端组件,用于处理客户端的请求。Servlet 可以与 HTTP 协议结合,处理 HTTP 请求和响应。在文件上传中,Servlet 可以处理客户端上传的文件,并将其保存到服务器端。 文件上传实现...

    jsp,servlet上传下载文件

    2. 服务器端处理上传文件:在服务器端,使用 servlet 处理上传的文件,并将其存储到指定的位置。 3. 文件下载:在服务器端,提供文件下载的接口,客户端可以通过该接口下载文件。 jsp 页面的实现 在 jsp 页面中,...

    android通过servlet上传文件到服务器

    android通过servlet上传文件到服务器是非常重要的一种技术,旨在帮助开发者快速实现android客户端上传文件到服务器端。本文将详细介绍android通过servlet上传文件到服务器的过程,包括服务器端的编程实现和客户端的...

    利用COS Servlet上传文件

    总的来说,利用COS Servlet上传文件涉及到客户端的表单提交和服务器端的Servlet处理,需要对HTTP协议、文件上传、MultipartRequest以及可能的业务逻辑有深入理解。同时,确保在实现过程中充分考虑安全性,以提供健壮...

    andriod、iOS服务器端代码之文件上传

    这里的"andriod、iOS服务器端代码之文件上传"是指为这两种移动操作系统开发应用时,实现文件从客户端(手机)上传到服务器端的技术实现。服务器端代码通常由后端语言编写,如Java、Python、Node.js等,用于处理文件...

    android 选择文件上传至服务器 包含服务器代码

    本教程将详细介绍如何在Android客户端实现文件选择并上传至服务器,同时提供服务器端的处理代码。以下是实现这一功能的关键知识点: 1. **Android文件选择**: - 使用`Intent.ACTION_PICK`启动系统文件选择器,...

    JSP中(jsp+servlet)实现的文件上传

    在IT行业中,文件上传功能是Web应用程序中常见且重要的需求之一。本教程将详细讲解如何在JSP(Java Server Pages)环境中,...请记住,始终要在服务器端进行严格的文件类型和大小验证,以确保系统的安全性和稳定性。

    Servlet上传文件并显示进度条

    "Servlet上传文件并显示进度条"这个主题涵盖了如何在用户上传大文件时提供实时进度反馈,以增强用户体验。在这个过程中,我们需要处理以下几个核心知识点: 1. **Multipart解析器**:Servlet 3.0及以上版本引入了...

    CKEditor 上传文件(Servlet实现)

    - "CKEditor上传文件Servlet版本1.0"这个压缩包可能包含了CKEditor的示例配置、Servlet的Java源代码、HTML页面和可能的web.xml配置文件。解压并根据这些文件进行部署和测试。 通过以上步骤,你可以成功地在...

    JAVA_servlet的文件上传案例

    在Java Web开发中,Servlet是一种常用的服务器端编程接口,用于扩展服务器的功能,处理HTTP请求。在本案例"JAVA_servlet的文件上传"中,我们将深入探讨如何使用Servlet实现文件上传功能,这对于构建交互性强的Web...

    jsp servlet 上传文件

    在Java Web开发中,`JSP (JavaServer Pages)` 和 `Servlet` 是两种常见的技术,它们经常被结合使用来处理动态网页和服务器端业务逻辑。本篇将详细讲解如何使用`JSP`和`Servlet`合作实现文件上传功能,特别是针对图片...

    Servlet上传代码和架包

    在这个"Servlet上传代码和架包"中,我们可以看到一个关于如何在Servlet中实现文件上传的实例,这对于初学者来说是一个非常实用的学习资源。 文件上传是Web应用程序中的常见功能,允许用户将本地文件传输到服务器。...

    java web接收上传文件服务器端示例

    在Java Web开发中,文件上传是一项常见的功能,...以上就是Java Web接收上传文件服务器端示例的主要技术点。在UploadTest项目中,你将看到如何实现这些步骤的代码,从而完成Android客户端与服务器之间的文件上传交互。

    jsp+servlet文件上传

    JSP是一种服务器端脚本语言,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,从而在服务器端生成动态网页内容。而`Servlet`是Java编程语言中的一个接口,用于扩展服务器的功能,处理HTTP请求和响应。在文件...

    使用jQuery ajaxFileUpload+servlet实现文件上传

    首先,`jQuery ajaxFileUpload` 插件允许用户在不刷新页面的情况下上传文件,提供了一种友好的用户体验。它的主要优点包括进度条显示、错误处理以及对多文件上传的支持。要使用这个插件,你需要在HTML页面中引入...

    JSP+servlet上传文件有 进度条

    总结来说,实现"JSP+servlet上传文件有进度条"需要结合JSP、Servlet、文件上传库(如Commons-FileUpload)以及前端的AJAX和JavaScript技术。通过异步请求和实时的进度反馈,为用户提供流畅的文件上传体验。在实际...

    基于servlet的简易文件上传(带进度条)

    同时,需要设置`enctype="multipart/form-data"`,因为这是上传文件所必需的MIME类型。 接下来,我们需要在Servlet中解析请求的多部分数据。Java标准库提供了一个名为`javax.servlet.http.Part`的接口,它代表了...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    4. **Servlet接收**:服务器端的Servlet接收到请求,通过`HttpServletRequest`的`getParts()`方法获取上传的文件Part。 5. **文件保存**:Servlet读取Part的内容,将其写入服务器指定的文件路径,完成文件保存。 6. ...

    客户端向服务器端上传文件

    在客户端向服务器端上传文件的过程中,涉及到的主要技术包括前端交互、后端处理和文件传输协议。下面将分别从这三个方面详细讲解相关知识点。 首先,前端交互是用户与应用程序的接触点,这里通常会使用HTML、CSS和...

    android上传文件,java服务器接收 客户端与服务器端两端上传代码

    **Android客户端上传文件** 1. **创建HTTP请求**:Android客户端首先需要构建一个HTTP请求,通常是POST请求,携带文件数据。可以使用`HttpURLConnection`或者第三方库如`Volley`、`OkHttp`等。 2. **文件读取**:...

Global site tag (gtag.js) - Google Analytics