3

我刚刚从 BalusC 阅读了这个关于如何使用 3.0 Servlet API 上传文件的好答案。

我的问题是关于request.getParameter()for common 字段的使用。例如,如果我的表单如下所示:

<form action="/upload" method="post" enctype="multipart/form-data">
    <fieldset>
        <label for="description">File description:</label>
        <input type="text" id="description" name="description" value="" />

        <label for="uploadedFile">File:</label>
        <input type="file" id="uploadedFile" name="uploadedFile" />

        <input type="submit" value="Send" />              
    </fieldset>
</form>

按照 BalusC 的解释,我应该操作返回的 InputStreampart.getInputStream()以获取描述字段的内容。这是为什么 ?我试着简单地打电话request.getParameter("description"),它似乎工作正常。

我使用 Tomcat 7.0.20。

谢谢你的帮助。

4

2 回答 2

4

我试图简单地调用 request.getParameter("description"),它似乎工作正常。

事实上,这在 Servlet 3.0 规范中是这样指定的,但直到最近它才在 Glassfish 的早期版本中起作用,即使它是参考实现。这已报告为Glassfish 问题 16740,并已在 3.1.2 中修复,比第一个 3.0 版本晚了 2 年多。

于 2012-06-28T04:18:42.867 回答
3

它从 Servlet 3.0 本身就可用。所有 Servlet 3.0 容器都应该通过HttpServletRequest.getParameter().

这是Servlet 3.0 规范在第 23 页所说的:

3.2 文件上传

...

对于带有form-dataas Content-Disposition,但没有文件名的部件,部件的字符串值也可以通过 getParameter/ getParameterValues方法HttpServletRequest使用部件的名称。

于 2012-06-28T04:51:12.313 回答