我有一个正在回发到servlet的文件上传表单(使用multipart/ form -data编码)。在servlet中,我尝试使用Apache Commons来处理上传。但是,我在表单中也有一些其他字段,它们只是普通字段。如何从请求中读取这些参数?
例如,在我的servlet中,我有这样的代码来读取上传的文件:
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
Iterator /* FileItem */ items = upload.parseRequest(request).iterator();
while (items.hasNext()) {
FileItem thisItem = (FileItem) items.next();
... do stuff ...
}发布于 2008-12-08 20:54:49
您可以尝试如下所示:
while (items.hasNext()) {
FileItem thisItem = (FileItem) items.next();
if (thisItem.isFormField()) {
if (thisItem.getFieldName().equals("somefieldname") {
String value = thisItem.getString();
// Do something with the value
}
}
}发布于 2011-11-03 04:17:29
我花了几天时间才弄明白这一点,但这是它的工作,你可以读取多部分的数据,文件和参数,这是代码:
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);
while(iterator.hasNext()){
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if(item.isFormField()){
if(item.getFieldName().equals("vFormName")){
byte[] str = new byte[stream.available()];
stream.read(str);
full = new String(str,"UTF8");
}
}else{
byte[] data = new byte[stream.available()];
stream.read(data);
base64 = Base64Utils.toBase64(data);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}发布于 2008-12-08 20:39:36
你试过request.getParam()了吗?
https://stackoverflow.com/questions/350794
复制相似问题