Java中fileupload组件的使用、下载,文件上传

今天给大家讲解在Java中如何使用fileupload组件来快速实现文件、图片的上传,欢迎提出你的疑问

什么是fileupload

由Apache(跟Tomcat是一家的)提供,属于第三方组件。所以使用时,第一步就要导入这个组件的相关jar包

fileupload的思想是怎样的

fileupload 组件可以将所有的请求信息都解析成 Fileltem对象,可以通过对 Fileltem对象 的操作完成上传(也就是使用了面向对象的思想)

怎么使用

  1. 第一步,要先去官网下载两个jar包,并放入你的工程中,具体位置见下图所示(图中lib文件夹是需要自己手动创建的):
    在这里插入图片描述
    这里给出 jar 包的百度网盘下载连接:

    链接:https://pan.baidu.com/s/1_GW9nfkubspdjwPprrBZpw
    提取码:1234

  2. 怎么使用?----> 要先拿到 FileItem 对象,怎么拿?

    	try {
    	    //拿FileIteam对象的步骤
    	    DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
    	    ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
    	    List<FileItem> fileItems = servletFileUpload.parseRequest(req); //调方法:解析请求,将所有请求信息转化成一个FileItem的集合
    	} catch (FileUploadException e) {
    		e.printStackTrace();
    	}	
    

    在这里插入图片描述

代码实现文件上传的过程

注意:这里贴出来的 servlet 代码,不包括import和package的部分,只需要粘贴到你的工程中即可。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form enctype="multipart/form-data" method="post" action="upload">
            <input type="file" name="fil"/>
            <input type="submit" value="上传"/>
        </form>
    </body>
</html>
@WebServlet("/upload")
public class FileUpload extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
        try {
            //拿FileIteam对象的步骤
            DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
            ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
            List<FileItem> list = servletFileUpload.parseRequest(req); //将所有请求信息转化成一个FileItem的集合

            //由于文本也可以存入FileItem对象,所以判断一下是不是文件
            for (FileItem fileItem : list) {
                if (fileItem.isFormField()) { //文本框为true
                    String name = fileItem.getFieldName(); //获取input中的name
                    String value = fileItem.getString("UTf-8"); //获取值,并设置编码格式

                } else {
                    //可以测试一下文件的基本信息
                    String name = fileItem.getName(); //获取文件名
                    long size = fileItem.getSize();//获取文件大小,以字节为单位
                    System.out.println("文件名为:" + name + ";大小为:" + size + "Byte");

                    //注意这里的区别:因为所以请求都解析成FileItem中了,所以不在是req了
                    InputStream inputStream = fileItem.getInputStream();

                     //存入本地
                    String str = req.getServletContext().getRealPath("file/" + name);
                    OutputStream outputStream = new FileOutputStream(str);
                    int temp = 0;
                    while((temp = inputStream.read())!=-1){ //由于这里没有用字符流封装(也可以封装:用字符),用的是字节,所以是-1
                        outputStream.write(temp);
                    }
                    outputStream.close();
                    inputStream.close();
                    System.out.println("上传成功");

                }
            }

        } catch (FileUploadException e) {
            e.printStackTrace();
        }

    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学鸡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值