MultipartReques类主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
先写一个html,代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>upload.html</title>
<meta http-equiv="content-type" content="text/html; charset=GBK">
</head>
</form>
<body>
<form name="UploadForm" enctype="multipart/form-data" method="post" action="test">
用户名:<input type="text" id="userName" name="userName"/><br>
密码:<input type="password" id="password" name="password" /><br>
<input type="file" name="File1" size="20" maxlength="20"><br>
<input type="file" name="File2" size="20" maxlength="20"><br>
<input type="submit"value="上传">
</form>
</body>
</html>
再写一个servlet用于处理请求,代码如下:
package test;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
@SuppressWarnings("serial")
public class TestServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MultipartRequest mr=null;
//用来限制用户上传文件大小的
int maxPostSize = 1 * 100 * 1024 * 1024;
//第一个参数为传过来的请求HttpServletRequest,
//第二个参数为上传文件要存储在服务器端的目录名称
//第三个参数是用来限制用户上传文件大小
//第四个参数可以设定用何种编码方式来上传文件名称,可以解决中文问题
mr = new MultipartRequest(request, "E:\\zhang", maxPostSize, "GBK");
//传回所有文件输入类型的名称
Enumeration files = mr.getFileNames();
String fileName = "";
String filePath="";
while (files.hasMoreElements()) {
fileName = (String) files.nextElement();
System.out.println("FileName============"+fileName);
//用此方法得到上传文件的真正的文件名,这里的fileName指文件输入类型的名称
filePath = mr.getFilesystemName(fileName);
System.out.println("FilePath============"+filePath);
//此方法得到一个文件对象,代表储存在服务器上的fileName文件
File f = mr.getFile(fileName);
if (null == f)
throw new ServletException("file is not exist");
}
//可以取得请求参数的名称
Enumeration enum1=mr.getParameterNames();
while (enum1.hasMoreElements()) {
String s=(String)enum1.nextElement();
System.out.println(s);
String[] str=mr.getParameterValues(s);
for (int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
}
}
运行后结果如下:
16:36:16,346 INFO [STDOUT] FileName============File2
16:36:16,346 INFO [STDOUT] FilePath============新建 文本文档.txt
16:36:16,346 INFO [STDOUT] FileName============File1
16:36:16,346 INFO [STDOUT] FilePath============test.txt
16:36:16,346 INFO [STDOUT] password
16:36:16,346 INFO [STDOUT] zhy
16:36:16,346 INFO [STDOUT] userName
16:36:16,346 INFO [STDOUT] zhang
若出现异常如下,则是maxPostSize 设置太小,文件太大
exception :
java.io.IOException: Posted content length of 785 exceeds limit of 1
com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:172)
com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
test.TestServlet.service(TestServlet.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
若出现异常如下,则提交方式应该为post提交,或编码形式为enctype="multipart/form-data"
exception:
java.io.IOException: Posted content type isn't multipart/form-data
com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:173)
test.TestServlet.service(TestServlet.java:26)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
关于此类的API详看
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
分享到:
相关推荐
在IT行业中,文件上传是常见的交互需求,尤其是在Web应用中。多文件上传功能允许用户一次选择并上传多个文件,极大地提升了用户体验。`MultipartRequest`是处理这种需求的一个关键组件,尤其是在Java Web开发中,它...
Oreilly MultiPartRequest 是一个用于Java Web应用的工具,它简化了HTTP多部分请求的处理,特别适用于解决文件上传中的挑战。下面我们将深入探讨如何利用Oreilly MultiPartRequest来解决这些问题。 首先,理解HTTP...
本篇文章将详细探讨标题和描述中涉及的`GsonRequest`与`MultiPartRequest`的实现,以及如何与文件上传相结合。 ### GsonRequest的定制 1. **添加Header和Cookie**:在Volley中,我们可以通过自定义`Request`子类来...
MultipartRequest是Java Web应用程序中处理这种请求的一种工具。 这个项目已经迁移到GitHub上,这意味着其源代码对公众开放,开发者可以查看、下载、使用,甚至贡献代码来改进项目。GitHub是一个全球知名的代码托管...
- **MultipartRequest**:如使用Volley库,可以利用其内置的MultipartRequest类简化多部分上传。 通过这个源码,开发者可以深入理解Android应用如何与服务器交互进行文件上传,同时了解JSP如何处理这些请求,对于...
### JAVA系统下的FLASH,FLV视频应用解决方案 #### 一、引言 随着互联网技术的发展,视频内容在网络上变得越来越流行。FLV(Flash Video)作为一种流媒体格式,因其基于Flash播放器而广受青睐。本文章旨在探讨如何在...
在Spring MVC框架中,FCKEditor的使用方法类似,但需要在控制器方法中处理MultipartRequest,以便获取上传的文件。Spring提供`CommonsMultipartResolver`解析器来处理这种情况。以下是一个使用Spring MVC的例子: `...
在IT行业中,文件上传是Web应用中常见的功能之一,它允许用户将本地文件发送到服务器进行存储或处理。本资源“文件上传处理的实现包_jsp”提供了实现这一功能的具体工具,尤其适用于Java Servlet环境中的JSP(Java...
在Android应用开发中,图片上传是一项常见的功能,特别是在社交、电商或者任何需要用户分享内容的应用中。本篇文章将深入探讨如何使用Volley库在Android端实现图片上传功能。 Volley是Google推出的一个网络请求库,...
综上所述,这个资源提供了基于 Volley 的文件上传解决方案,通过自定义的 `MultipartRequest` 类,开发者可以轻松地在 Android 应用中实现文件,尤其是图片的上传功能。同时,需要注意在实际应用中,还需要考虑性能...
随着互联网技术的发展,越来越多的应用需要实现用户与系统的互动,尤其是文件上传功能已经成为许多Web应用不可或缺的一部分。Java作为一种广泛使用的编程语言,在处理文件上传方面提供了多种解决方案。本文将重点...
- "www.pudn.com.txt":这可能是一个文本文件,可能包含在Pudn.com网站上关于JSPWiki的介绍或者下载链接。 - "JSPWiki":这可能是一个目录,包含了JSPWiki项目的源代码、配置文件和其他相关资源。 总的来说,...
在Android应用开发中,Volley是一个非常流行的网络请求库,由Google开发并推荐使用。它以其高效的缓存机制、线程管理以及简单的API而受到开发者欢迎。本篇将重点讲解如何利用Volley库来实现图片的上传功能,包括单张...
Servlet是Java编程语言中用于开发动态Web应用程序的核心技术。它允许Java代码响应来自Web客户端(如浏览器)的请求,并生成动态内容。在这个库中,`cos.jar` 文件很可能是“Commons Servlet”组件的归档文件,它包含...
Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。配置文件在Struts2框架中起着至关重要的作用,它们定义了框架的行为、拦截器、对象工厂以及各种组件的配置。下面将详细介绍...
`sqljdbc4.jar`提供了与数据库的连接能力,而`multipartrequest.jar`则有助于处理复杂的HTTP请求,两者共同构成了Java Web应用与后端数据库交互的基础。在实际开发中,理解这些jar包的作用和使用方法,将有助于提高...
**示例**:通常使用默认实现类`org.apache.struts2.dispatcher.multipart.MultiPartRequest`。 **应用场景**:当需要扩展或自定义文件上传功能时,可以替换默认实现类。 #### struts.multipart.saveDir **含义**...
在IT行业中,文件的上传与下载是Web应用中常见的功能,尤其在开发基于Java的Web应用程序时。JSP(JavaServer Pages)是Java平台上的一个关键技术,它允许开发者创建动态网页并处理用户请求。本篇文章将深入探讨如何...
标题“jsp_upload_0.2.1.zip_java upload_upload”暗示了这是一个关于Java Web应用程序的压缩包,专注于文件上传功能。这个版本号0.2.1可能代表这是该软件的一个迭代版本,通常意味着它在先前版本的基础上进行了改进...