javaweb文件上传下载

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

孤傲苍狼

只为成功找方法,不为失败找借口!

JavaWeb学习总结(五十)——文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb 中的文件上传和下载功能的实现。

对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts 上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。

一、开发环境搭建

创建一个FileUploadAndDownLoad项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示:

二、实现文件上传

2.1、文件上传页面和消息提示页面

upload.jsp页面的代码如下:

1 <%@ page language="java" pageEncoding="UTF-8"%>

2

3

4

5文件上传

6

7

8

9

action="${pageContext.request.contextPath}/servlet/UploadHandleServlet" enctype="multipart/form-data" method="post">

10上传用户:

11上传文件1:

12上传文件2:

13

14

15

16

message.jsp的代码如下:

1 <%@ page language="java" pageEncoding="UTF-8"%>

2

3

4

5消息提示

6

7

8

9${message}

10

11

2.2、处理文件上传的Servlet

UploadHandleServlet的代码如下:

1package me.gacl.web.controller;

2

3import java.io.File;

4import java.io.FileOutputStream;

5import java.io.IOException;

6import java.io.InputStream;

7import java.util.List;

8import javax.servlet.ServletException;

9import javax.servlet.http.HttpServlet;

10import javax.servlet.http.HttpServletRequest;

11import javax.servlet.http.HttpServletResponse;

12import mons.fileupload.FileItem;

13import mons.fileupload.disk.DiskFileItemFactory;

14import mons.fileupload.servlet.ServletFileUpload;

15

16public class UploadHandleServlet extends HttpServlet {

17

18public void doGet(HttpServletRequest request, HttpServletResponse response)

19throws ServletException, IOException {

20//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全

21String savePath =

this.getServletContext().getRealPath("/WEB-INF/upload");

22File file = new File(savePath);

23//判断上传文件的保存目录是否存在

24if (!file.exists() && !file.isDirectory()) {

25System.out.println(savePath+"目录不存在,需要创建");

26//创建目录

27file.mkdir();

28}

29//消息提示

30String message = "";

31try{

32//使用Apache文件上传组件处理文件上传步骤:

33//1、创建一个DiskFileItemFactory工厂

34DiskFileItemFactory factory = new DiskFileItemFactory();

35//2、创建一个文件上传解析器

36ServletFileUpload upload = new

ServletFileUpload(factory);

37//解决上传文件名的中文乱码

38upload.setHeaderEncoding("UTF-8");

39//3、判断提交上来的数据是否是上传表单的数据

40if(!ServletFileUpload.isMultipartContent(request)){

41//按照传统方式获取数据

42return;

43}

44//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List集合,每一个FileItem对应一个Form表单的输入项

45List list = upload.parseRequest(request);

46for(FileItem item : list){

47//如果fileitem中封装的是普通输入项的数据

48if(item.isFormField()){

49String name = item.getFieldName();

相关文档
最新文档