Java 如何找到FileItemIterator返回的FileItemStream的编码?

Java 如何找到FileItemIterator返回的FileItemStream的编码?,java,google-app-engine,servlets,encoding,apache-commons-fileupload,Java,Google App Engine,Servlets,Encoding,Apache Commons Fileupload,我使用ApacheCommonsFileUpload在Servlet中接收上传的文件,如中所述 我不确定item.getContentType()是否也将包含文本文件的文件编码,该编码可能与请求编码不同(例如ISO-8859-1),或者它是否始终仅包含文件类型。在我的测试中,我只收到了“text/plain”,但我期待的是“text/plain;Encoding=ISO-8859-1”,它是从客户端发送的 我的理解正确吗?item.getContentType()应该包括编码(如果它是从客户端发

我使用ApacheCommonsFileUpload在Servlet中接收上传的文件,如中所述

我不确定item.getContentType()是否也将包含文本文件的文件编码,该编码可能与请求编码不同(例如ISO-8859-1),或者它是否始终仅包含文件类型。在我的测试中,我只收到了“text/plain”,但我期待的是“text/plain;Encoding=ISO-8859-1”,它是从客户端发送的


我的理解正确吗?item.getContentType()应该包括编码(如果它是从客户端发送的)?

FileItemStream.getContentType()返回从浏览器POST传递的任何内容。它可以是“text/plain”,也可以是“text/plain;Encoding=ISO-8859-1”,也可以是完全的垃圾。内容类型只是一个字符串值,您相信浏览器会正确地提供给您(换句话说,根本不信任它)

        ServletFileUpload upload = new ServletFileUpload();

        FileItemIterator iterator = upload.getItemIterator(request);

        while (iterator.hasNext()) {
            FileItemStream item = iterator.next();
            InputStream stream = item.openStream();

            if (!item.isFormField()) {
              System.out.println("Got an uploaded file: " + item.getFieldName()
                        + ", name = " + item.getName() + " type = " +               item.getContentType());

            }