带有其他输入字段的HTML文件上载表单

时间:2011-02-23 18:33:49

标签: html servlets file-upload

我有以下html表单...

<html>
<head><title>Upload Servlet</title></head>
<body><h2>Upload Servlet</h2>

<form name='uploadparams' enctype='multipart/form-data' action='' method='post'>
    <label>Migrate Options From:
        <select name='migrateFrom'>
            <option></option>
            <option value='version 1'>version 1</option>
        </select>
    </label>
    <br/>
    <input type='file' name='zipFile'>
    <br/>
    <input type='hidden' value='willnotshowupinservlet'/>
    <button type='submit'>Submit</button>
</form>
</body>
</html>

问题是虽然我可以使用http参数名称“zipFile”读取文件,但我的servlet没有看到其他参数“willnotshowupinservlet”和“migrateFrom”。文件上传表单只能有一个输入(文件输入)吗?

1 个答案:

答案 0 :(得分:5)

它们确实不能用作常规请求参数,因为您已将表单编码设置为multipart/form-data(为了能够在请求正文中包含文件内容,这确实是必需的)。您必须解析请求正文符合multipart/form-data规范。 Servlet API的getParameter()调用仅支持application/x-www-form-urlencoded的表单编码,这是HTML enctype元素的默认<form>

用于简化工作的常用API是Apache Commons FileUpload。或者,当您已经使用Servlet 3.0时,需要使用@MultipartConfig注释servlet。您可以在this answer中找到这两种方法的具体示例。