文件上传组件 FileUpload组件的使用

文件的上传存在的意义
    在项目中经常上传文件:qq上传图片,相册上传图片,资料的共享……
 
    实现文件上传的步骤
    1.指定表单的类型为文件上传表单
        必须指定表单的属性  enctype="multipart/form-data"  
        <form action="" method="post" enctype="multipart/form-data>
        <input type="file" name="files"/>
    2.提交方式必须为post
    手动上传文件处理
    //获取表单中的文件
        //获取输入流
        InputStream in = request.getInputStream();
        //转换流
         InputStreamReader inReader = new InputStreamReader(in);
        //定义缓冲流
        BufferedReader br = new BufferedReader(inReader);
        处理数据文件
    Content-Disposition: form-data; name="files"; filename="D:\01readme.txt"
    Content-Type: text/plain
    需要具体处理文件,必须处理 Content-Disposition

    在开发中使用文件上传组件来上传文件
    一个好的组 最大的特点:简单易用   安全     其次是功能强大
    通常使用fileupload组件上传文件   需要引入的包
    1.commons-fileupload-1.2.1.jar
    2.commons-io-1.4.jar
        //创建文件上传工程类  
        FileItemFactory fileItemFactory = new DiskFileItemFactory();
            FileItemFactory 把每一个表单请求对象封装成一个FileIteam对象
            fac.serRepository(repository)设置文件上传的临时目录
            默认为服务器的temp目录
            虚拟机最大内存 在Windows下为1g  在 linux下最大为16g。
                        
        //先创建文件上传核心类对象    
        ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
            作用:可以获取所有的FileItem对象
            upload.parseRequest(request);返回值类型List,获取所有文件上传项
            Boolean isMultipartContent(request)判断表单的类型
            upload.setFileSizeMax(fileSize)设置单个文件的最大值
            upload.setSizeMax(fileSize)设置上传文件(所有的文件)的最大值
            upload.setHeaderEncoding(编码方式);相当于request.setContentType(编码方式);
        //判断是否是文件上传表单
        if (ServletFileUpload.isMultipartContent(request)) {
            //把请求数据转换为FileIteam对象集合
            try {
                //list中放置的每一个上传项
                List<FileItem> list = upload.parseRequest(request);
                //遍历每一个上传项
                for (FileItem fileItem : list) {
                    //判断是普通表单,还是文件上传项
                    if (fileItem.isFormField()) {
                        //普通表单
                        String fileName = fileItem.getFieldName();
                        //文本框的值                        
                        String  str = fileItem.getString();                            
                    } else {
                        //文件表单
                        //表单元素名字
                        String fileName = fileItem.getFieldName();
                        //文件的类型
                        String contentType = fileItem.getContentType();
                        //获取文件名字
                        String name = fileItem.getName();
                        //获取文本框的值  即文件内容
                        String  str = fileItem.getString();
                        
                        //设置请求的编码 处理编码
                        fileItem.getString("编码方式");
                        //把文件写到指定的目录下
                        fileItem.write(new File("指定目录"))
                        //删除临时文件
                        fileItem.delete()
                        //文件流
                        InputStream in = fileItem.getInputStream();
                        //文件的大小
                        long size = fileItem.getSize();
                    }
                }
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("不是文件上传表单");
        }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。