2

我使用 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() 应该包含编码(如果它是从客户端发送的)?

4

1 回答 1

2

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

于 2010-01-19T20:57:45.633 回答