`

文件上传总结

    博客分类:
  • java
阅读更多

    这两天想分析一下文件上传的源码,先写一下FileUpload的最基本的使用方法。 主要是给自己做一个总结,高手就不要看了,过两天我会分析FileUpload的源码。


import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * Servlet implementation class UploadServlet
 */
public class UploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public UploadServlet() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}

	@SuppressWarnings("unchecked")
	protected void process(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8;");
		boolean isMutilpart = ServletFileUpload.isMultipartContent(request);
		if (!isMutilpart) {
			throw new IllegalArgumentException("只能为: multipart/form-data 类型");
		}

		DiskFileItemFactory factory = new DiskFileItemFactory();

		ServletFileUpload fileUpload = new ServletFileUpload(factory);

		fileUpload.setFileSizeMax(1024 * 1024 * 200);
		fileUpload.setHeaderEncoding("UTF-8");

		List<FileItem> fileItems = null;
		try {
			fileItems = fileUpload.parseRequest(request);
		} catch (FileUploadException e) {
			e.printStackTrace();
		}

		StringBuffer buffer = new StringBuffer();

		Iterator<FileItem> iter = fileItems.iterator();
		while (iter.hasNext()) {
			FileItem fileItem = iter.next();
			if (fileItem.isFormField()) {
				processFormField(fileItem, buffer);
			} else {
				processFileField(fileItem, buffer);
			}
		}

		PrintWriter writer = response.getWriter();
		writer.write(buffer.toString());
		writer.flush();
		writer.close();

	}

	private void processFormField(FileItem fileItem, StringBuffer buffer) {
		String name = fileItem.getFieldName();
		String value = fileItem.getString();
		String output = "Name:" + name + " Value: " + value;
		buffer.append(output + "</br>");
		System.out.println(output);
	}

	private void processFileField(FileItem fileItem, StringBuffer buffer) {
		String fieldName = fileItem.getFieldName();
		String fileName = fileItem.getName();
		String contentType = fileItem.getContentType();
		long size = fileItem.getSize();

		boolean isInMemory = fileItem.isInMemory();
		String output = "Name:" + fileName + " Fielname: " + fieldName
				+ " ContentType: " + contentType + " size " + size
				+ " InMemory: " + isInMemory + "";

		buffer.append(output + "</br>");

		System.out.println(output);
	}

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>fileupload</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>UploadServlet</display-name>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/servlet/uploadServlet</url-pattern>
  </servlet-mapping>
</web-app>
分享到:
评论

相关推荐

    Struts2 文件上传总结

    Struts2 文件上传是Web开发中的一个重要组成部分,它允许用户从客户端向服务器传输文件,例如图片、文档等。本文将详细讲解Struts2框架中实现文件上传的两种常见方法,并探讨相关的注意事项和技术要点。 首先,我们...

    struts2文件上传总结

    以下是对Struts2文件上传的详细总结: 1. **表单设计**: - 在HTML表单中,需添加`&lt;input type="file" /&gt;`字段,例如`&lt;input type="file" name="myUpload" /&gt;`。`name`属性对应Action类中的属性。 2. **Action类*...

    关于文件上传与下载的实现方法总结

    ### 关于文件上传与下载的实现方法总结 在软件开发特别是Web应用开发中,文件的上传与下载是非常常见的功能需求之一。本文将详细介绍文件上传与下载的多种实现方法,并特别聚焦于通过Java语言来实现这些功能的具体...

    文件上传(普通上传,oss上传,oss大文件分段上传)

    总结一下,文件上传在Java中可以通过本地文件系统操作或云存储服务如阿里云OSS实现。对于大文件,OSS的Multipart Upload是高效且可靠的解决方案。了解这些知识点将有助于你构建更强大的文件管理系统。在实际开发中,...

    Apache 文件上传与文件下载案例详解

    总结一下,Apache文件上传与下载涉及的主要知识点包括: 1. Servlet的配置与映射。 2. 文件上传的处理,通常使用Commons FileUpload库。 3. 文件列表的生成,可能涉及到文件系统操作。 4. 文件下载的实现,通过设置...

    java文件异步上传

    当文件上传请求到达服务器时,这些方法会接收文件流,保存到服务器的磁盘上,或者将其存储到数据库或云存储服务中。处理上传的Java代码需要考虑到文件大小限制、错误处理、文件命名规则以及安全性等方面的问题。 ...

    go gin web框架文件上传,可以使用curl进行上传文件

    总结,Gin框架为Go语言开发Web应用提供了一种高效且易于使用的解决方案,包括文件上传功能。通过Gin的`FormFile`方法,我们可以轻松地接收和处理上传的文件。同时,结合curl命令,我们可以方便地对上传接口进行测试...

    文件上传和下载的常见测试点

    文件上传和下载测试点总结 文件上传和下载是许多应用程序和网站的基本功能之一,在进行测试时需要考虑多个方面的测试点,以下是文件上传和下载的常见测试点: 下载测试点 1. 右键另存为是否可以正确下载文件,...

    android 文件上传(多个或单个),图片上传

    总结,Android的文件上传涉及文件选择、读取、压缩、转换为流,以及利用Multipart请求将数据发送到服务器。同时,配合JSON数据可以传递更多的业务信息。理解并熟练运用这些技术,能够帮助开发者实现高效且稳定的文件...

    C#多文件上传

    ### C#多文件上传知识点详解 #### 一、FileUpload控件概述 在Web开发中,尤其是使用ASP.NET进行Web应用程序开发时,`FileUpload`控件是一个非常实用且强大的工具,它允许用户从客户端上传文件到服务器。该控件不仅...

    JSP实现文件上传与下载.pdf

    下面是JSP实现文件上传与下载的知识点总结: 一、JSP文件上传的基本步骤 1. 在HTML表单中添加文件上传控件,使用input type="file"控件。 2. 在FORM标签中添加ENCTYPE="multipart/form-data"属性,以便将文件上传...

    文件上传,多文件上传案例

    ### 文件上传及多文件上传案例详解 在现代Web应用程序中,文件上传是一项常见的需求,尤其在涉及用户交互的场景中更为普遍。本文将基于提供的标题“文件上传,多文件上传案例”及其描述“多文件上传功能,使用C#...

    springmvc+hadoop+maven实现文件上传至hdfs

    在本实例中,SpringMVC作为前端控制器,接收用户的文件上传请求,处理业务逻辑,并将结果返回给用户。开发者可以定义各种控制器方法来处理特定的HTTP请求,比如一个用于处理文件上传的`@RequestMapping`注解的方法。...

    php大文件上传例子及说明

    在PHP中处理大文件上传是一项常见的任务,尤其在处理...总结,处理PHP中的大文件上传需要考虑多个方面,包括配置限制、文件验证、错误处理和可能的用户体验优化。理解这些要点,就能构建出安全、可靠的文件上传系统。

    C#实现文件上传

    ### C#实现文件上传的关键知识点 #### 一、概述 在C#中实现文件上传是一项常见但非常重要的功能,尤其对于Web应用来说更是如此。本文将深入探讨如何使用C#来实现文件上传,并重点关注以下几个方面:如何利用C#进行...

    finecms-含有前台文件上传漏洞源码包.zip

    《细解FineCMS前台文件上传漏洞及其源码分析》 FineCMS是一款常见的开源内容管理系统,以其易用性和灵活性深受开发者喜爱。然而,如同其他软件一样,FineCMS也存在潜在的安全问题,其中最为突出的就是前台文件上传...

    java springboot 文件上传,多文件上传.zip

    总结,Java SpringBoot实现文件上传主要涉及配置文件设置、创建Controller处理请求、使用`MultipartFile`接口来操作上传文件,并根据实际需求进行文件验证、存储和管理。通过这些步骤,你可以构建出稳定、安全的文件...

    ExtJS验证上传文件类型

    ExtJS 中实现文件上传功能是非常方便的,但对于新手来说,控制文件上传类型是一个难题。例如,我们只想让用户上传特定的文件类型,例如txt文件,那么如何实现当用户上传非txt文件时,给出错误提示呢?这篇文章将详细...

    dwr和简单的文件上传

    总结起来,使用DWR进行文件上传涉及以下步骤: 1. 配置DWR允许文件上传相关的Java方法被JavaScript调用。 2. 在HTML页面中创建文件选择和上传触发元素。 3. 使用DWR JavaScript API调用服务器端的文件上传方法。 4. ...

Global site tag (gtag.js) - Google Analytics