0

次のHTMLスニペットは、サーブレットに対してPOSTSendFileName要求を行います。

<form method="post" action="SendTheFileName" enctype="multipart/form-data">
                <div id="Files_to_be_shared"> 
                      <input type="file" id="File" name="FileTag" />
                      <input type="submit" value="Share" /> 
                </div>
</form>

サーブレットのPOSTメソッドで、次のように呼び出してファイル名を取得しようとします。

String FileName = request.getParameter("FileTag")

しかし、私は得ていnullます。何故ですか ?

ファイルのアップロードに Apache commons を使用しています。正常に動作しています。jdkのみを使用しているときにenctypeがmultipart/form-dataの場合、なぜnullになるのかわかりません。

4

3 に答える 3

1

Servlet 3.0 API (Java EE 6) provides methods to access the content of a multipart post:

See HttpServletRequest.getParts() You should have one Part for the file and one for each parameter.

于 2013-01-17T18:56:42.850 に答える
0

nullフォームが「multipart/form-data」のエンタイプであり、入力タイプが「file」の場合、HttpServletRequest requestParameterMap()内に入らないためです。

次のようなJavaEE6の別のオプションを使用する必要があります。

Part filePart = request.getPart("FileTag"); // or "File" - I am not sure 
                                            // that not for id value 
                                            // you should search
String fileName = filePart.getName();

また、Jave EEサーブレットだけでなくJSFを使用できる場合(JSF 2.2では)、input type="file"用の特別なタグがあります。

<h:inputFile value="#{myFileUploader.file}"/>


これは役立つはずです。

于 2013-01-17T19:07:59.017 に答える
0

を使用するenctype="multipart/form-data"と、すべてのフォーム パラメータがマルチパートとして転送されます。

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);

// Process the uploaded form items
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {
       // ** here you get the non-file parameters **
    } else {
        processUploadedFile(item);
    }
}
于 2013-01-17T14:55:32.300 に答える