使用commons-fileupload 后,
其表单中放了除“文件域”外的TEXT控件,在Servlet采用request.getParameter()得不到其值。
解决方法1:
用两个表单:
1.一个采用POST提交的文件上传的from
2.对该上传文件描述的form,
3.脚本取form2的值,并添到form1的url中。
解决方法2:
得到request:
其表单中放了除“文件域”外的TEXT控件,在Servlet采用request.getParameter()得不到其值。
解决方法1:
用两个表单:
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" onclick = "ok()" >
- </ form >
<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 >
<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 >
<SCRIPT>
function ok()
{
var name = form2.name.value;
var title= form2.title.value;
form1.action="FileUpload?name="+name+"&title="+title;
form1.submit();
}
</SCRIPT>
解决方法2:
得到request:
- ServletFileUpload upload = new ServletFileUpload(factory);
- try {
- List items = upload.parseRequest(request);
- for (Iterator i = items.iterator(); i.hasNext();) {
- FileItem fileItem = (FileItem) i.next();
- String field = fileItem.getFieldName();
- if (field.equals( "kind" )){
- kind = fileItem.getString();
- continue ;
- } else if (field.equals( "id" )){
- id = fileItem.getString();
- continue ;
- } else if (field.equals( "topic" )){
- topic = fileItem.getString();
- continue ;
- }
解决方法三:
我目前通过百度/google还没找出哪里有给出这种解决方案,比较奇怪...主要思路就是写个handler将byte的字节流解析出来,从而得到原始的值。
利用ServletInputStream in = request.getInputStream()得到reques传入的字节流,request.getContentLength()得到字节流的长度,这两个是最关键的,然后利用byte[] line = in.readLine() 就可以一行一行的读取字节流,再转化成String类型输出观察下格式,就可以很容易的提取到其中的参数了。
方法二没有实现,相信这是使用commons-fileupload,request.getParameter(''filename") = null 的问题解决 的方法!