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

时间:2010-01-19 20:51:54

标签: java google-app-engine servlets encoding apache-commons-fileupload

我使用Apache Commons FileUpload接收Servlet中上传的文件,如http://code.google.com/appengine/kb/java.html#fileforms

所述
        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());

            }

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

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

1 个答案:

答案 0 :(得分:2)

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