4

現在Postを使用してファイルをアップロードし、multipart/form-dataとしてenctypeを持つコードベースがあります。次に、いくつかのフォームアイテムを含める必要があります。つまり、いくつかのパラメータもファイルのアップロードとともに渡されます。htmlフォームを作成しましたが、マルチパートフォームであるため、request.getParameterを使用できません。アップロードファイルと一緒にパラメータを渡す方法を誰かに提案してもらえますか?以下のコードを提供しています。コードの互換性に基づいて回避する方法を教えてください

if (!ServletFileUpload.isMultipartContent(request)) {
  throw new CustomUploadException("Not a file upload request");
}

ServletFileUpload  upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(request);

while (iter.hasNext())
{
  FileItemStream item = iter.next();

  if (item.isFormField() == false && 
      item.getFieldName().equalsIgnoreCase("xmlfile"))
  {
      String fileName = item.getName();
      myBean.setFileName(fileName );
  }

}
4

3 に答える 3

4

isFormFieldonFileItemStreamがtrueを返す場合、それは通常のフィールドです。openStream内容を使用して文字列に読み込むことができます。

このようなもの:

FileItemStream item = iter.next();
if(item.isFormField()) {
   // Normal field
   String name = item.getFieldName();
   String value = Streams.asString(item.openStream());
} else {
   // File
}

Streams.asString使用する文字セットエンコーディングである2番目のパラメータを取ります。サイトに適したものを指定する必要がある場合があります。

于 2011-06-30T19:44:44.937 に答える
1

FileUploadを使用してパラメーターを送信するには、 setActionメソッド内のURLに次のように追加する必要があります。

formPanel.setAction( "< ProjectURL > / < YourServletName >?< YourParameterName > =" + parameter);

また、サーブレットでは、次のようにパラメータを取得するだけです

。req.getParameter( "< YourParameterName > ");

それが役に立てば幸い ;-)

于 2015-11-17T07:43:16.093 に答える
0

同様の解決策:

FileItemStream item = iter.next();
if(item.isFormField()) {
    String value = item.getString();
}

また

FileItemStream item = iter.next();
if(item.isFormField()) {
   InputStream name = item.getInputStream();
   String value = Streams.asString(name);
}
于 2014-01-08T05:21:30.840 に答える