[英]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.