3

3.0 サーブレット API を使用してファイルをアップロードする方法について、BalusC からの素晴らしい回答を読みました。

私の質問は、request.getParameter()for common フィールドの使用についてです。たとえば、フォームが次のようになっている場合:

<form action="/upload" method="post" enctype="multipart/form-data">
    <fieldset>
        <label for="description">File description:</label>
        <input type="text" id="description" name="description" value="" />

        <label for="uploadedFile">File:</label>
        <input type="file" id="uploadedFile" name="uploadedFile" />

        <input type="submit" value="Send" />              
    </fieldset>
</form>

BalusC の説明に従って、 descriptionフィールドpart.getInputStream()の内容を取得するために返された InputStream を操作する必要があります。何故ですか ?単純に を呼び出そうとしましたが、うまくいくようです。request.getParameter("description")

Tomcat 7.0.20 を使用しています。

ご協力いただきありがとうございます。

4

2 に答える 2

4

私は単に request.getParameter("description") を呼び出そうとしましたが、うまくいくようです。

実際、これは Servlet 3.0 仕様でそのように指定されていますが、参照実装であるにもかかわらず、Glassfish の以前のバージョンでは最近まで機能しませんでした。これはGlassfish issue 16740として報告されており、最初の 3.0 リリースから 2 年以上経過した 3.1.2 で修正されています。

于 2012-06-28T04:18:42.867 に答える
3

Servlet 3.0 自体から利用可能です。すべての Servlet 3.0 コンテナは、入力型パラメータを を通じて利用できるようにする必要がありますHttpServletRequest.getParameter()

これは、サーブレット 3.0 仕様の23 ページに次のように記載されています。

3.2 ファイルのアップロード

...

form-dataが含まれているContent-Dispositionがファイル名がない パーツの場合、パーツの文字列値は、パーツの名前を使用して、 のgetParameter/ getParameterValuesメソッドからも取得できます。HttpServletRequest

于 2012-06-28T04:51:12.313 に答える