Как я могу найти кодировку FileItemStream, возвращенную FileItemIterator? - PullRequest
2 голосов
/ 19 января 2010

Я использую Apache Commons FileUpload для получения выгруженных файлов в сервлете, как описано в 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 Ответ

2 голосов
/ 19 января 2010

FileItemStream.getContentType () возвращает все, что было передано из POST браузера.Это может быть «text / plain» или «text / plain; Encoding = ISO-8859-1» ИЛИ это может быть полный мусор.Тип контента - это просто строковое значение, которое вы доверяете браузеру, чтобы дать вам правильно (другими словами, не доверяйте ему вообще).

...