使用commons-fileupload 后,
其表单中放了除“文件域”外的TEXT控件,在Servlet采用request.getParameter()得不到其值。
解决方法:
用两个表单:
1.一个采用POST提交的文件上传的from
<form action="FileUpload" method="post"
enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="button" name="Submit" value="upload" οnclick="ok()">
</form>
2.对该上传文件描述的form,
<FORM name="form2" action="" method="get">
<input type="text" name="name">
<input type="text" name="title">
</FORM>
3.脚本取form2的值,并添到form1的url中。
<SCRIPT>
function ok()
{
var name = form2.name.value;
var title= form2.title.value;
form1.action="FileUpload?name="+name+"&title="+title;
form1.submit();
}
</SCRIPT>
=================================================================================
http://topic.csdn.net/u/20080426/10/96e6943c-1fa5-4f15-a3a4-6cc77656eb5f.html
你上传文件的时候表单是设的 enctype="multipart/form-data"吧,这样 <input type="text" name="desc"/>就是以二进制形式上传的,肯定取不到了,你先用FileUploadBase的parseRquest()取得一个 FileItem的List
然后再判断每一个item是不是你要取的那一项,isFormField(),getFieldName()
如果是的话,就getString()就可以了,如果是文件那就write().
/*
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}
// Process a regular form field
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
...
}
// Process a file upload
if (!item.isFormField()) {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
...
}
// Process a file upload
if (writeToFile) {
File uploadedFile = new File(...);
item.write(uploadedFile);
} else {
InputStream uploadedStream = item.getInputStream();
...
uploadedStream.close();
}
*/