Grails文件中的普通java servlet上传空的FileItem列表

时间:2013-01-11 17:08:10

标签: java grails servlets

我遇到了这样的问题

我使用apache HttpServlet lib。

在Java中实现了FileUpload

当我将此代码测试为简单的Java Web项目并将其部署在Tomcat中时,它可以正常工作。 但是当我在Grails项目中将其部署为servlet时,List<FileItem> items始终为空。

我很确定这是因为Grails中的某些内容在Servlet之前使用了请求主体,但我不知道如何强迫Grails不要在我之前使用请求。

我需要将简单的Java servlet添加到grails项目中,因为我需要将一些已编写的Java代码与Grails集成。

这是servlet代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        List<FileItem> items = new ServletFileUpload(
                new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                String fieldname = item.getFieldName();
                String fieldvalue = item.getString();
                System.out.println(fieldname + "=" + fieldvalue);
            } else {
                String fieldname = item.getFieldName();
                String filename = FilenameUtils.getName(item.getName());
                InputStream filecontent = item.getInputStream();
                String value = IOUtils.toString(filecontent);
                System.out.println(fieldname + "=" + value);
            }
        }
    } catch (FileUploadException e) {
        throw new ServletException("Cannot parse multipart request.", e);
    }
}

它只是读取请求正文并打印到sysout。

现在我有了表格:

<html>
 <body>
   <form action="http://localhost:8080/Tst/photoServlet" method="post" enctype="multipart/form-data">
     <input type="text" name="fieldId" value="field_photo"/>
     <input type="file" name="Afile" />
     <input type="submit" />
   </form>
 </body>
</html>

我还在Grails中添加了这样的映射到web.xml

<servlet>
    <servlet-name>photoServlet</servlet-name>
    <servlet-class>com.tst.PhotoUploadServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>photoServlet</servlet-name>
    <url-pattern>/ws/photoUpload</url-pattern>
</servlet-mapping>

0 个答案:

没有答案