1.jsp页面:method必须为post,enctype="multipart/form-data"
<form action="UploadServlet" method="post" enctype="multipart/form-data">
username: <input type="text" name="username"><br>
file: <input type="file" name="file"><br>
file2: <input type="file" name="file2"><br>
<input type="submit" value="submit">
2 web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.shengsiyuan.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.Servlet处理类:
jar包:
commons-io-2.0.1.jar
commons-fileupload-1.2.2.jar
package com.shengsiyuan.servlet;
import java.io.File;
import java.io.IOException;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
//处理文件上传 使用apache 的 FileUpload组件为Servlet及Web应用提供上传功能
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/**
* 使用FileUpload上传步骤
* FileUpload:默认上传文件的大小为10k
*/
//步骤一:DiskFileItemFactory 磁盘文件条目工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//upload文件夹为WebRoot下的一个文件夹;
//path得到该文件夹的绝对路径
String path = req.getRealPath("/upload");
//setRepository方法用于设置一个目录:用于临时存放上传的文件
//如果文件比较小,会直接存在内存里,如果比较大,则需要缓冲放在磁盘上存放(超过)
factory.setRepository(new File(path));
//设置文件大小,如果超出,文件会直接被写到磁盘上面 (1M),如果没超出,则存放在内存里
factory.setSizeThreshold(1024 * 1024);
//步骤二:ServletFileUpload:创建指定处理上传的对象;提供(parseRequest)方法去解析请求
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//步骤三:FileItem:提供一序列方法
//list 为上传的多个文件
List<FileItem> list = (List<FileItem>) upload.parseRequest(req);
for (FileItem item : list) {
//取得form input 的name值
String name = item.getFieldName();
if (item.isFormField()) {// 这里处理的是普通文本域 input type=text
//获得name对应input的value值
String value = item.getString();
System.out.println(name + "=" + value);
//放到request范围
req.setAttribute(name, value);
} else {// 这里处理文件类型 type=file
// 获取到上传文件的名字
String value = item.getName();
int start = value.lastIndexOf("\\");
//处理 opera 浏览器会把上传文件的路径都取得,
String fileName = value.substring(start + 1);
req.setAttribute(name, fileName);
// 将文件写到指定磁盘的目录里:路径:path,文件名:fileName
item.write(new File(path, fileName));
// 也可由下面的方法写到磁盘
// OutputStream os = new FileOutputStream(new File(path,
// fileName));
// InputStream is = item.getInputStream();
// byte[] buffer = new byte[400];
// int length = 0;
// while((length = is.read(buffer)) != -1)
// {
// os.write(buffer, 0, length);
// }
//
// is.close();
// os.close();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
//将请求转发到页面
req.getRequestDispatcher("fileUploadResult.jsp").forward(req, resp);
}
}
4 fileUploadResult.jsp
<%@ page language="java" import="java.util.*, java.io.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<body>
<%
/*
InputStream is = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String buffer = null;
while(null != (buffer = br.readLine())) {
out.print(buffer + "<br>");
}
br.close();
is.close();
*/
%>
username : ${requestScope.username }<br>
file: ${requestScope.file}<br>
file2: ${requestScope.file2 }<br>
</body>
分享到:
相关推荐
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
使用FileUpload组件实现上传功能,供大家一起共同分享学习。
在传统的Servlet中,文件上传需要手动解析请求体,而FileUpload组件则通过解析multipart/form-data类型的请求,将上传的文件数据和表单数据分离,方便开发者进行处理。 FileUpload组件的核心功能包括: 1. **解析...
其中,`<p:fileUpload>`组件是用于实现文件上传功能的一个重要元素。本篇文章将深入探讨如何使用PrimeFaces的`<p:fileUpload>`组件在JSF应用中实现实时、便捷的文件上传。 首先,让我们了解`<p:fileUpload>`的基本...
本篇将详细讲解使用FileUpload组件实现JSP文件上传所需的步骤和关键知识点。 首先,`fileUpload组件`是Apache Commons项目的一个子项目,它提供了一套API,可以方便地处理HTTP请求中的多部分数据,即文件上传。在...
标题"commons-fileUpload组件"指的是Apache Commons FileUpload,这是一个Java库,专门用于处理HTTP请求中的文件上传。它与另一个组件Apache Commons IO紧密协作,为Java应用程序提供方便、高效的文件上传功能。 ...
在这个"fileUpload组件"中,前端部分可能包括以下关键知识点: 1. **事件监听**:使用JavaScript监听文件选择事件,当用户选择文件后触发相应的处理函数。 2. **文件读取API**:FileReader API用于在客户端预览、...
通过学习这个资源包,开发者不仅可以掌握FileUpload组件的使用,还能理解文件上传背后的原理,这对于开发复杂Web应用来说是非常有价值的。无论你是前端新手还是经验丰富的开发者,都能从中获益,提升自己的技能水平...
系统依赖MySQL数据库存储上传的文件信息,并使用了FileUpload组件来处理文件上传的过程。 【知识点一】:JSP(JavaServer Pages) JSP是Java的一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而...
总的来说,Apache的FileUpload组件为Java Web应用提供了一个强大且易于使用的文件上传解决方案。开发者可以根据需求进行配置和扩展,以满足不同场景下的文件上传需求。在实际项目中,务必关注安全性和性能优化,以...
首先,Commons FileUpload组件的核心功能是解析HTTP请求中的`multipart/form-data`内容,这是HTML表单上传文件时通常使用的编码方式。它能够识别并提取每个部分的数据,包括文件内容和其他非文件数据,如文本字段。 ...
Apache组织提供的一个开源组件Commons-FileUpload,该组件可以方便的将“multipart/form-data”类型请求中的各种表单域解析出来,并实现一个或多个文件的上传,同时也可以限制上传文件的大小等内容。其性能十分优异,...
### Common-fileupload组件实现文件上传 #### 一、概述 在现代Web开发中,文件上传是一项常见的需求。尤其是在Java Web应用程序中,实现文件上传功能变得越来越简单,这得益于丰富的开源库支持。Common-fileupload...
"FileUpload_php"是一个专门为PHP开发的上传组件,其设计灵感来源于163编辑器的上传功能,旨在提供简单易用且高效的文件上传解决方案。 "FileUpload_php"组件的核心功能包括: 1. **多文件选择**:允许用户通过...
该上传的实现使用到了apache公司的fileupload组件。通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ...
四、FileUpload组件如何工作? FileUpload 组件基于 RFC1867 规范,用于处理文件上传。在客户端,浏览器按照 RFC1867 规范将用户指定的文件发送到服务器。在服务器端,网页程序按照 RFC1867 规范解析出用户发送来的...
在Web开发中,用户可能需要上传图片、文档等文件,FileUpload组件提供了便捷的API,使得开发者可以轻松地处理这些复杂的文件上传操作。这个压缩包包含的是FileUpload的jar包和源码,版本为1.3。 **1. 文件上传基础*...
在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...
采用apache commons 项目中的fileupload组件,实现了文件上传功能,它能够便利而简单地使得web应用程序和servlet具备高性能的文件上传能力,减小了直接操作输入输出流的系统开销。
本实现抽取了apache commons.fileupload的最基本代码,组合成一个简单的文件上传组件,对parseRequest方法进行了改进,对于文件,直接存储到指定的上传目录,加快了上传速度。使用本程序时,注意上传端的参数设置,...