2

http://code.google.com/appengine/kb/java.html#fileformsで説明されているように、サーブレットでアップロードされたファイルを受信するために Apache Commons FileUpload を使用します。

        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 に答える