簡體   English   中英

與多部分/表單數據上傳表單一起傳遞參數(Java Http 上傳后)

[英]Passing parameters along with a multipart/form-data upload form (Java Http Post Upload)

我有一個代碼庫,目前使用 Post 上傳文件,並且 enctype 為 multipart/form-data。 現在我需要包含一些表單項,即一些參數也將與文件上傳一起傳遞。 我創建了我的 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 );
  }

}

如果FileItemStream上的isFormField返回 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采用第二個參數,它是要使用的字符集編碼,您可能需要指定一個適合您的站點的參數。

要使用 FileUpload 發送參數,只需將其添加到setAction方法中的URL中,如下所示:

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

在您的 servlet 中,只需按如下方式獲取參數:

req.getParameter("< YourParameterName > ");

希望能幫助到你;-)

類似的解決方案:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM