【发布时间】:2013-12-29 16:22:49
【问题描述】:
我正在开发一个网络应用程序。我的 jsp 带有 enctype="multipart/form-data",当我提交请求时,我无法在 servlet 中获取请求参数。
getParameter() 调用都将返回 null。问题是如何克服这个问题?
当它没有被加密时,这段代码可以正常工作。我知道这已经被问过很多次了,但我没有找到任何直接的答案
JSP
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile[]" id="uploadfile" size="50" multiple="true" />
<br/><br/>
<input type="hidden" name ="e_id" value= <%=userBean.getEid%> />
<input type="hidden" name ="Uid" value= <%=userBean.getUid()%> />
<input type="submit" name ="button1" value="Upload" />
</form>
Servlet
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
int e_id =0;
String uid = null;
HttpSession session1 = request.getSession(true);
if(ServletFileUpload.isMultipartContent(request)){//process only if its multipart content
try
{
List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for(FileItem item : multiparts)
{
if(!item.isFormField())
{
String name = new File(item.getName()).getName();
item.write( new File(UPLOAD_DIRECTORY + File.separator + name));
e_id = Integer.parseInt(request.getParameter("e_id"));
uid = request.getParameter("Uid");
}
else {}
...
【问题讨论】:
-
数据隐藏在请求
InputStream中。签出this。 -
在
else {}块中 - 当item.isFormField() -
@NikosParaskevopoulos 有趣的方法,但变量 map 仅返回此
Content-Disposition: form-data; name="uploadfile[]"; filename},因此我无法使用map.get("id"),这可能是我的问题的解决方案。 -
@IanRoberts 不,它在
else{}块中也不起作用。
标签: java jsp servlets input multipartform-data