JavaWeb学习总结(十一)文件上传与文件下载

本文详细介绍了JavaWeb中的文件上传与下载实现,包括文件上传的步骤、Servlet解析文件、使用commons-fileupload处理上传,以及文件下载的API、中文乱码问题的解决方法,覆盖了常见浏览器的兼容性处理。
摘要由CSDN通过智能技术生成

  文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的上传和下载。 比如:QQ 头像,就使用了上传;邮箱中也有附件的上传和下载功能;OA 系统中审批有附件材料的上传

一、文件上传

(一)步骤

  1. 要有一个 form 标签,method=post 请求
  2. form 标签的 enctype 属性值必须为 multipart/form-data
  3. 在 form 标签中使用 input type=file 添加上传的文件
  4. 编写服务器代码(Servlet 程序)接收,处理上传的数据。

enctype=multipart/form-data 表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼接,然后以二进制流的形式发送给服务器。

(二)文件上传中HTTP 协议的说明

upload.jsp:
在这里插入图片描述
Servlet:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UploadServlet extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        System.out.println("文件上传过来了");
    }
}

web.xml:

<servlet>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>com.fox.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/uploadServlet</url-pattern>
</servlet-mapping>

在这里插入图片描述
在这里插入图片描述
谷歌浏览器按F12,点击Network查看请求体和请求体:
在这里插入图片描述

(三)Servlet解析上传的文件

上面我们只是简单地完成了文件上传的步骤,还没有在Servlet中解析上传的文件
要想完整实现文件上传,我们需要用到commons-fileupload.jar包,而commons-fileupload.jar 需要依赖 commons-io.jar 这个包,所以两个包我们都要引入(可以在Maven仓库搜索下载)。

1.commons-fileupload.jar 常用 API 介绍说明

commons-fileupload.jar 中,我们常用的类和方法有哪些?

  • ServletFileUpload 类,用于解析上传的数据。
    • public static final boolean isMultipartContent(HttpServletRequest request)判断当前上传的数据格式是否是多段的格式。
    • public List<FileItem> parseRequest(HttpServletRequest request) 解析上传的数据
  • FileItem 类,表示每一个表单项。
    • boolean isFormField() 判断当前这个表单项,是普通的表单项(true);还是上传的文件类型(false)
    • String getFieldName() 获取表单项的 name 属性值
    • String getString() 获取当前表单项的value 属性值。
    • String getName() 获取上传的文件名
    • void write( file )将上传的文件写到 参数 file 所指向的硬盘位置

2.文件上传的最终实现

upload.jsp和web.xml还是和上面一样
Servlet:

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值