• 文件上传之FileItem使用


    一、介绍

    FileItem类的常用方法:

    1.boolean isFormField()。isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段(true),还是一个文件表单字段(false)。因此可以用该方法判断是否是普通表单域还是文件上传表单域。

    2.String getName()。getName方法用来获得文件上传字段中的文件名。

    3.String getFieldName()。getFieldName方法用来返回表单标签的name属性的值。

    4.void write(File file)。write方法将FileItem对象中的内容保存到某个指定的文件中。如果FileItem对象中的内容是保存在某个临时文件中,该方法完成后,临时文件可以会被删除。该方法也可以将普通表单字段保存在一个文件中,但最主要的用途是把上传的文件内容保存在本地文件系统中。

    5.String getString()。getString()方法将FileItem对象中保存的数据流内容以一个字符串返回。它有两个重载形式。public Java.lang.String getString()和public java.lang.String getString(java.lang.String encodeing) throws java.io.UnsupportedEncodingException。前者使用缺省的字符集编码将主体内容转换成字符串,后者使用参数指定的字符集编码。如果在读取普通表单字段元素的内容时,出现了乱码现象,可以调用第二个方法,并传入正确的字符集编码名称。

    6.String getContentType()。此方法用来获得上传文件的类型,即标段字段元素描述头属性“content-type”的值,如image/jpeg。如果FileItem对象对应的是普通的表单字段,将返回null。

    7.boolean isInMemory()。判断FileItem对象封装的数据是保存在内存中还是硬盘中。

    8.void delete()。此方法用来清空FileItem对象中封装的主体内容,如果内容是被保存在临时文件中,该方法会把临时文件删除。

    9.InputStream getInputStream()。以流的形式返回上传文件的主体内容。

    10.long getSize()。返回上传文件的大小。

    二、使用例子

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Path("/uploadFile")
    public void uploadFile(@Context HttpServletRequest request) {
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if(isMultipart){
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setHeaderEncoding("UTF-8");
            List<FileItem> list = null;
            try {
                list = upload.parseRequest(request);
                for(FileItem file : list){
                    if(file.isFormField()){
                        //普通的表单值
                    }else{
                        //获取文件名(带后缀名)
                        String fileName = file.getName();
                        //获取文件输入流
                        InputStream input = file.getInputStream();
                        /*
                         * 处理逻辑
                         */
                    }
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    }
  • 相关阅读:
    复盘:错误理解zuul路径匹配,无法使用zuul
    oracle 查询含clob 字段慢
    Javascript生成二维码(QR)
    那些可以在数据库里做的事:分页与过滤
    小谈Scrum敏捷开发流程
    45个实用的JavaScript技巧、窍门和最佳实践
    编写更好的jQuery代码的建议
    冷门JS技巧
    jQuery编程的最佳实践
    chrome扩展安装图文教程
  • 原文地址:https://www.cnblogs.com/nananana/p/9059518.html
Copyright © 2020-2023  润新知