JavaEE(6)——文件上传下载

本文详细介绍了如何使用JavaEE中的Servlet结合Apache Commons FileUpload库实现文件上传下载功能。实验目的是掌握文件上传下载的实现,重点在于理解如何通过DiskFileItemFactory和ServletFileUpload进行文件解析,并使用FileItem类处理上传的文件。实验步骤包括导入jar包,编写Servlet、HTML、JSP文件以及测试运行。此外,还讨论了关键类的作用和文件上传的流程。
摘要由CSDN通过智能技术生成

1 实验目的

  1. 掌握通过Servlet实现文件上传下载功能;
  2. 重点掌握commons-fileupload.jar接收浏览器上传文件,实现上传功能;

2 实验注意事项

首先文件上传表单的数据也是被封装到request对象中的。
request.getParameter(String)方法获取指定的表单字段字符内容,但文件上传表单已经不在是字符内容,而是字节内容,所以失效。

这时可以使用request的getInputStream()方法获取ServletInputStream对象,它是InputStream的子类,这个ServletInputStream对象对应整个表单的正文部分(从第一个分隔线开始,到最后),这说明需要的解析流中的数据。

当然解析它是很麻烦的一件事情,而Apache已经帮我们提供了解析它的工具:commons-fileupload.jar
该组件由多个类共同组成,使用该组件实现文件上传功能,只需要了解和使用其中三个类:DiskFileUploadFileItemFileUploadException

使用fileupload组件的步骤如下:

  1. 创建工厂类DiskFileItemFactory对象:
    DiskFileItemFactory factory = new DiskFileItemFactory()
  2. 使用工厂创建解析器对象:
    ServletFileUpload fileUpload = new ServletFileUpload(factory)
  3. 使用解析器来解析request对象:
    List list = fileUpload.parseRequest(request)

FileItem类,它才是最终要的结果。一个FileItem对象对应一个表单项(表单字段)。
一个表单中存在文件字段和普通字段,可以使用FileItem类的isFormField()方法来判断表单字段是否为普通字段,如果不是普通字段,那么就是文件字段了。

  • String getName():获取文件字段的文件名称;
  • String getString():获取字段的内容,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件;
  • String getFieldName():获取字段名称,例如:,返回的是username;
  • String getContentType():获取上传的文件的类型,例如:text/plain。
  • int getSize():获取上传文件的大小;
  • boolean isFormField():判断当前表单字段是否为普通文本字段,如果返回false,说明是文件字段;
  • InputStream getInputStream():获取上传文件对应的输入流;
  • void write(File):把上传的文件保存到指定文件中。

3 实验任务与步骤

任务描述:
利用Apache公司的commons-fileupload.jar接收浏览器上传文件,实现文件上传功能。

3.1 导入Jar包

在这里插入图片描述

3.2 编写FileUploadServlet.java

package exp06.bean;

import java.io.File;
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.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
public class FileUploadServlet extends HttpServlet {
    
	public FileUploadServlet() {
    
		super();
	}
	public void destroy() {
    
		super.destroy(); 
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    
		response.setContentType("text/html;charset=utf-8");  
		PrintWriter out = response.getWriter(
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值