`
zyj7261349
  • 浏览: 26663 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

servlet中的文件上传

阅读更多
一段很有用的实现jsp,servlet 文件上传的代码 ,直接放在servlet中用
	response.setContentType("text/html;charset=gb2312");// 设置返回头信息
		PrintWriter out = response.getWriter();// 返回的输出
	//	String path ="E:/workspace/My/wordToExcel/WebContent/upfile";// 得到该应用下的upload目录在服务器上的绝对路径
		String path = request.getSession().getServletContext().getRealPath("upfile");// 得到该应用下的upload目录在服务器上的绝对路径
		if (path == null) {// 如果为空表示不能访问,可能是系统设置了访问权限
			out.print("无法访问该目录!");
			return;
		}

		
		File uploadDir = new File(path);// 得到该目录的文件对象
	//	String uploadPath = uploadDir.getAbsolutePath();// 获得绝对路径
	//	File uploadDir2 = new File(uploadPath);
		if (!uploadDir.exists()) {// 判断该目录是否存在

			if (!uploadDir.mkdir()) {// 如果不存在就建立该目录
				out.print("无法创建该目录!");// 如果建立失败,给出提示
				return;
			}
		}

		if (!ServletFileUpload.isMultipartContent(request)) {// 用 ServletFileUpload 类的静态方法 isMultipartContent 判断 request 是否是multipart/form-data 类型
			out.print("只能 multipart/form-data 类型数据");
			return;
		}
		// 创建 DiskFileItemFactory 对象
		
		
		DiskFileItemFactory factory = new DiskFileItemFactory();

		// factory.setRepository(tempDir);可以设置缓存目录
		factory.setSizeThreshold(1024 * 1024);// 超过1m的数据采用临时文件缓存

		ServletFileUpload upload = new ServletFileUpload(factory);// 创建 ServletFileUpload对象,构造的时候传一个DiskFileItemFactory对象进去
		upload.setFileSizeMax(1024 * 1024 * 2);// 单个文件大小
		upload.setHeaderEncoding("gb2312");// 设置普通字段名称和文件字段的文件名所采用的字符集编码
		upload.setSizeMax(1024 * 1024 * 4);// 最多上传2m的文件

		List list = null;
		try {
			list = upload.parseRequest(request);// 解析 request 对象 得到一个包含 FileItem对象的 list
		} catch (FileUploadException e) {
			out.print("解析文件时出现问题:");
			e.printStackTrace();
			return;
		}

		Iterator it = list.iterator();// 遍历list
		while (it.hasNext()) {
			FileItem fi = (FileItem) it.next();// 类型转换

			if (fi.isFormField()) {// 判断该 FileItem 对象是否是一个普通表单类型
				String name = fi.getFieldName();// 得到普通表单类型的表单名
				String content = fi.getString("GB2312");// 用指定编码得到普通表单的值
				request.setAttribute(name, content);// 把键值放入 request 对象
			} else {
				try {
					String pathStr = fi.getName();// 得到文件表单的值,就是用户本地的文件路径
					// 如果文件表单为空,则不处理
					if (pathStr.trim().equals("")) {
						continue;
					}

					int start = pathStr.lastIndexOf("\\");// 得到文件名在路径中的位置
					String fileName = pathStr.substring(start + 1);// 得到文件名

					File pathDest = new File(path, fileName);// 创建上传上来的文件对象
																	// 由服务器上存放文件的路径
																	// + 文件名 组成
					System.out.println(fileName);
					fi.write(pathDest);// 写文件

					String name = fi.getFieldName();// 得到文件表单的名称
					request.setAttribute(name, fileName);// 把表单名、文件名放入 request

				} catch (Exception e) {
					out.print("存储文件错误:");
					e.printStackTrace();
					return;
				} finally {// 立即删除保存表单字段内容的临时文件
					fi.delete();
				}
			}
		}

		StringBuffer filelist = new StringBuffer();// 得到可变字符串对象

		// 把上传的文件名拼装到可变字符串中
		String file1 = (String) request.getAttribute("file1");
		makeUplist(filelist, file1);
		String file2 = (String) request.getAttribute("file2");
		makeUplist(filelist, file2);
		
		request.setAttribute("list", filelist);// 把文件名的字符串放入 request
	//	request.getRequestDispatcher("success.jsp").forward(request, response);// 请求转发到指定
	}

	/**
	 * 将 str 追加到 sb中,以“,”隔开
	 * 
	 * @param sb
	 * @param str
	 */
	private void makeUplist(StringBuffer sb, String str) {

		if (str != null) {// 追加的字符串为空则不做任何操作
			if (sb.length() != 0) {// 如果可变字符串长度不为0,需要用“,”隔开
				sb.append(",");
			}
			sb.append(str);// 追加字符串
		}
分享到:
评论

相关推荐

    Servlet中文件上传和下载

    总结起来,Servlet中的文件上传和下载涉及到HTTP多部分请求、文件流操作、响应头设置等多个方面。通过JSP和Javabean,我们可以更方便地在页面上与用户交互,同时封装和管理业务逻辑。理解并熟练掌握这些技术,对于...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    servlet 文件上传与下载的相关jar包

    在Servlet中实现文件上传,你需要先创建一个Servlet,使用Commons FileUpload解析请求,然后将接收到的FileItem实例保存到服务器指定位置。下载文件则需要读取文件内容并写入到响应流中,这里 Commons IO 的文件读取...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    基于servlet的文件上传

    在文件上传场景中,Servlet接收POST请求,其中包含用户选择的文件数据。 Apache Commons FileUpload是一个流行的开源库,专门设计用来处理HTTP请求中的多部分数据,即文件上传。这个库简化了文件上传的复杂性,使...

    servlet实现文件上传下载

    首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常是浏览器)的POST请求时,可以解析请求体中的数据。对于文件上传,数据通常是以多部分/形式的数据格式(MIME类型:multipart/form-data)...

    servlet实现文件上传功能

    在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...

    vue+servlet的文件上传案例.rar

    在IT行业中,构建一个文件上传功能是常见的需求,特别是在Web应用中。本示例结合了前端的Vue.js框架和后端的Servlet技术,提供了一种实现文件上传的解决方案。Vue.js是一个轻量级的渐进式JavaScript框架,而Servlet...

    ajax异步文件上传,servlet处理

    本篇文章将深入探讨AJAX异步文件上传以及如何使用Servlet进行处理。 ### 1. AJAX异步文件上传原理 在HTML5之前,由于浏览器安全限制,AJAX无法直接处理文件,但HTML5引入了`FormData`对象,使得AJAX能够处理文件...

    JAVA_servlet的文件上传案例

    在本案例"JAVA_servlet的文件上传"中,我们将深入探讨如何使用Servlet实现文件上传功能,这对于构建交互性强的Web应用程序是至关重要的。文件上传功能允许用户在Web表单中选择本地文件并将其发送到服务器进行存储或...

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

    二、Servlet在文件上传中的角色 Servlet是Java Web开发中的核心组件,负责处理HTTP请求和响应。在文件上传场景下,Servlet接收由前端AjaxSubmit发送的文件数据,将文件保存到服务器,并返回相应的处理结果。 三、...

    servlet3.0文件上传 01.zip

    本工程用于借助Servlet3.0实现文件上传 本工程编码方式:UTF-8 注意: 1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C...

    servlet实现的上传文件实例

    在文件上传场景中,我们主要关注`service()`方法,它根据请求类型(GET或POST)调用对应的`doGet()`或`doPost()`。 3. **Servlet配置**: - 在web.xml中,我们需要定义Servlet并映射其URL pattern,以便服务器知道...

    Servlet实现文件上传与下载

    ### Servlet实现文件上传与下载 #### 一、概述 在Web开发中,文件的上传与下载是一项非常常见的功能需求。本文将详细介绍如何使用Java Servlet技术实现文件的上传和下载功能。我们将通过一个简单的示例来展示整个...

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    servlet多文件上传(带进度条)

    本示例主要讨论的是如何使用Servlet实现多文件上传,并且在此过程中添加进度条功能,为用户提供更好的交互体验。 首先,我们要理解文件上传的基本原理。在HTML表单中,我们可以使用`<input type="file" multiple>`...

    servlet实现多文件上传

    本篇文章将深入探讨如何使用Servlet实现多文件上传的功能。多文件上传是Web应用中常见的一种需求,例如用户可能需要上传一组图片、文档或其他类型的数据。Servlet提供了一种灵活的方式来处理这种需求。 首先,我们...

    CKEditor 上传文件(Servlet实现)

    在CKEditor的文件上传场景中,Servlet将接收编辑器发送的文件数据,并将其保存到服务器的指定位置。 1. **CKEditor配置**: - 在CKEditor的配置文件(config.js)中,我们需要设置允许上传的文件类型、最大文件...

    Flex+Java Servlet处理文件上传

    Flex+Java Servlet处理文件上传 关于上传文件

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

    在IT行业中,文件上传是常见的交互功能,尤其是在Web应用中。`jQuery` 是一个广泛使用的JavaScript库,极大地简化了DOM操作、事件处理和Ajax交互。`ajaxFileUpload` 是一个基于jQuery的插件,用于处理文件的异步上传...

Global site tag (gtag.js) - Google Analytics