在开发一个MIS系统中,部分页面中有需要上传文件的字段,相信大家在开发中也经常遇到这样的情况.因为要上传文件,所以FORM标记中的ENCTYPE="multipart/form-data",可是这样的话,当你在servlet里面用request.getParameter()方法无论如何都只是获得null值,没有办法只好在网上搜索一下,其中收集到了不同的方法,贴出来以备查询.
方法一
用jspsmartupload组件实现文件上传的
这个方法是我使用的方法,所以把主要代码贴了出来
SmartUpload upload = new SmartUpload();
try{
upload.initialize(config, request, response);
// 允许上传的文件类型
upload.setAllowedFilesList("doc,xls,");
// 拒绝上传的文件类型
upload.setDeniedFilesList("exe,bat,jsp");
// 允许上传文件的单个最大大小
upload.setMaxFileSize(1024 * 1024 * 20);
// 允许上传文件的最大大小总和
// upload.setTotalMaxFileSize(1024*1024*10);
//上传数据
upload.upload();
}
catch (SmartUploadException e){
e.printStackTrace();
return;
}
Request req = upload.getRequest();
String spid=(String)req.getParameter("teacherId");
//.....
//To do something
SmartUpload upload = new SmartUpload();
try{
upload.initialize(config, request, response);
// 允许上传的文件类型
upload.setAllowedFilesList("doc,xls,");
// 拒绝上传的文件类型
upload.setDeniedFilesList("exe,bat,jsp");
// 允许上传文件的单个最大大小
upload.setMaxFileSize(1024 * 1024 * 20);
// 允许上传文件的最大大小总和
// upload.setTotalMaxFileSize(1024*1024*10);
//上传数据
upload.upload();
} catch (SmartUploadException e){
e.printStackTrace();
return;
}
Request req = upload.getRequest();
String spid=(String)req.getParameter("teacherId");
//..... //To do something
==========================================================
方法二
这个是在Google中搜索的
I cannot read the submitter using request.getParameter("submitter") (it returns null). ]
Situation:
javax.servlet.HttpServletRequest.getParameter(String) returns null when the ContentType is multipart/form-data
Solutions:
Solution A:
1. download http://www.servlets.com/cos/index.html
2. invoke getParameters() on com.oreilly.servlet.MultipartRequest
Solution B:
1. download http://jakarta.apache.org/commons/sandbox/fileupload/
2. invoke readHeaders() in
org.apache.commons.fileupload.MultipartStream
Solution C:
1. download http://users.boone.net/wbrameld/multipartformdata/
2. invoke getParameter on
com.bigfoot.bugar.servlet.http.MultipartFormData
Solution D:
Use Struts. Struts 1.1 handles this automatically.
Solution B:
1. download > http://jakarta.apache.org/commons/sandbox/fileupload/ 2. invoke readHeaders()
in > org.apache.commons.fileupload.MultipartStream
The Solution B as given by my dear friend is a bit hectic and
a bit complex :
(We can try the following solution which I found much simpler (at least in usage).
1.Download one of the versions of UploadFile from
http://jakarta.apache.org/commons/fileupload/
2. Invoke parseRequest(request)
on org.apache.commons.fileupload.FileUploadBase which returns
list of
org.apache.commons.fileupload.FileItem objects.
3. Invoke isFormField() on each of the FileItem objects.
This determines whether the file item is a form paramater or stream of uploaded file.
4. Invoke getFieldName() to get parameter name and getString() to get parameter value on FileItem if it's a form parameter.
Invoke write(java.io.File) on FileItem to save the uploaded file stream to a file if the FileItem is not a form parameter.
主要是getFieldName和getString,判断加工一下,还是可以获取到的.
======================================================================
方法三
使用jspsmartupload组件的
只需要在servlet中添加
//中文和日文时使用
request.setCharacterEncoding("UTF-8");
//***************************************************************
JspFactory _jspxFactory = null;
PageContext pageContext = null;
JspWriter out = null;
_jspxFactory = JspFactory.getDefaultFactory();
pageContext = _jspxFactory.getPageContext(this,
request, response,"", true, 8192, true);
out = pageContext.getOut();
//smartupload
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();
Request requestSu = su.getRequest();
//getParameter
//普通的
int id = Integer.parseInt(
requestSu.getParameter("id"));
String languages = requestSu.getParameter("languages");
String flag = requestSu.getParameter("flag");
//*******************************************************
//中文和日文时使用
Description = request.getParameter("Description");
//******************************************************
另外在jsp中要传中文和日文得使用
document.form_SuccessfulCase.action=
"/homepage/SuccessfulCase?title=" +
encodeURI(document.form_SuccessfulCase.title.value)+
"&Description="+
encodeURI(document.form_SuccessfulCase.Description.value);
//***********************************
分享到:
相关推荐
在探讨“解决当FORM的ENCTYPE='multipart/form-data'时request.getParameter()获取不到值的方法”这一主题时,我们首先需要理解为什么在特定情况下,传统的`request.getParameter()`方法无法正常工作,以及如何通过...
标题提到的“上传文件fileupload+解决enctype= multipart/form-data无法传递其他参数”是一个常见的技术挑战,特别是当使用HTML表单进行文件上传时。`multipart/form-data`是用于处理包含二进制数据(如文件)的表单...
综上所述,当你遇到`ENCTYPE="multipart/form-data"`的表单提交时,不要期望使用`request.getParameter()`直接获取文本字段的值,而是应该采用上述的特定方法进行处理。确保选择合适的方法取决于你的项目环境和需求...
servlet上传 enctype="multipart/form-data" servlet上传 enctype="multipart/form-data
特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入探讨如何在不借助第三方库(如JSP Smart Upload)的情况下,解决文件上传中的传值问题。 #### 一、`multipart/form-...
我们都知道要让form能提交文件,需要在form上指定enctype=multipart/form-data的attribute,这样才能上传文件,关于enctype的文章很多,就不再做解释。 问题是因为使用了MVC的Html.BeginForm()来输出表单代码,默认...
这个表单使用`POST`方法,并且使用了`multipart/form-data`作为其`enctype`属性值,这表明该表单可以用来上传文件。 #### 标签解析 - **multipart/form-data**:如上所述,这是一种特定的表单数据编码类型,用于...
multipart/form-data是另一种常用的编码格式,它将窗体数据编码为一条消息,页上的每个控件对应消息中的一个部分。这种编码格式可以上传文件,并且可以处理复杂的数据结构。 在实际开发中,我们需要根据具体情况...
本文介绍了Node Js 使用KOA处理form-data格式传输过来的文件,分享给大家。...form表单【注意:enctype=”multipart/form-data”】上传文件时,首先会将文件上传到你本机的temp目录,然后执行move_upload_file
值得一提的是,在HTML中,表单上传文件时必须设置其enctype属性为multipart/form-data,因为默认值是application/x-www-form-urlencoded,这不支持文件上传。 JavaScript中,XMLHttpRequest Level 2引入了FormData...
阿贾克斯形式这是一个js事件监听器,可让您以最简单的方式使用ajax提交任何表单。 只需将类“ .ajax_form”添加到您的表单中,瞧,您的表单将开始... 只需将常规enctype =“ multipart / form-data”包含在表单元素中
2. **multipart/form-data**:当需要上传文件时,表单的`enctype`属性应设为`multipart/form-data`。这种方式将数据分割成多个部分,每个部分都有一个边界标识,这样可以同时发送文本和二进制数据(如图片)。每个...
控件,form 表单需要设置 enctype=”multipart/form-data” 属性。比如: <body> <form action=UploadFile.php method=post enctype=multipart/form-data> <input type=file name=fileUpload /&...
同时,记得设置`<constant name="struts.multipart.saveDir" value="your/directory/path"/>`来指定临时文件的保存位置。 2. **Spring集成**: Spring主要负责依赖注入和业务逻辑处理。你需要创建一个Service层...
注意:Multer将不处理任何非多multipart/form-data ( multipart/form-data )。翻译该自述文件也可用其他语言提供:(中文) (韩文) (俄语) (巴西葡萄牙语)安装$ npm install --save multer用法Multer增加了...
form action= method=post enctype=multipart/form-data> 修改头像 <input type=file name=file></p> <p><input type=submit value=提交></p> </form> manage.py #文件上传的视图
<form action="/Home/Upload" enctype="multipart/form-data" method="post"> <input type="file" name="file1" /><br /> <input type="submit" value="文件上传" /> </form> </body> </html>
另外,还需要增加上传的属性enctype= “multipart/form-data”,该属性说明浏览器可以提供文件上传功能。 2.编写处理表单提交的PHP脚本 当用户通过上传表单选择一个文件并提交后,PHP会自动生成一个$_FILES的二维...
// headers:{"ClientCallMode" : "ajax"},//添加请求头部 enctype="multipart/form-data" success: function(data){ if(data.msg=="success"){ alert("保存成功"); }else{ alert("保存失败")...