栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 fileItems = servletFileUpload.parseRequest(req); //调方法:解析请求,将所有请求信息转化成一个FileItem的集合
    	} catch (FileUploadException e) {
    		e.printStackTrace();
    	}	
    

代码实现文件上传的过程

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

    
        Title
    
    
        
@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 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();
        }

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号