使用Multipart/form-data表单



我正在编写一个应用程序将图像文件上传到服务器。我正在宣布将类型的形式宣布为 enctype =" multipart/form-data"> 我在此表单中也声明了很少的隐藏变量。当我试图在servlet中获取这些隐藏变量的值时,它以" null"的形式出现。如果我删除 ENCTYPE ,我可以检索变量的正确值。

JSP Form : 
    <FORM name="form1" enctype="multipart/form-data"><!-- T1787NM -->
                <input type=hidden name="stringurl" value="<%=stringurl%>">
                <input type=hidden name="savetype" value="<%=ACTION%>"> 
                <INPUT type="hidden" name="iReq" value="<%=iReq%>">     
                 <INPUT type="File" name="FileUpload" id="fileInput">   
    </FORM>
Servlet : 
String stringurl=(String) req.getParameter("stringurl");
other code..

我想知道如何在servlet中访问这些变量。预先感谢。

您需要在Servlet中编写以下代码

    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (!isMultipart) {
    } else {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<?> items = null;
        String stringUrl = null;
        try {
            items = upload.parseRequest(request);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        Iterator<?> itr = items.iterator();
        while (itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
            if (item.isFormField()) {
                System.out.println("Form Field");
                String parameterName = item.getName();
                if(parameterName.equals("stringurl")) {
                    stringUrl = item.getString();
                }
            } else {
                // upload file logic here
            }
        }
    }

同样,您需要使用其他梯子来获取所有其他表单字段。

您还必须添加Commons-Fileupload.jar,Commons-logging.jar和Commons-io.Jar。

相关内容

最新更新