Apache Commons FileUpload getString()方法 - Java

时间:2013-09-06 04:30:26

标签: java servlets file-upload apache-commons

我的FileUpload Servlet代码:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    NewsItems ni = new NewsItems();
    if (isMultipart) {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        try {
            List items = upload.parseRequest(request);
            Iterator iterator = items.iterator();
            String [] myValues = new String[6];
            while (iterator.hasNext()) {
                FileItem item = (FileItem) iterator.next();

                int i = 0;
                if (item.isFormField()) {
                    myValues[i] = item.getString();
                    System.out.println("my vals: "+myValues[i]); //PRINTS THE VALUES
                }
                i++;
            }
            String newsContent = myValues[2]; //PRINTS NULL
            System.out.println(newsContent);

        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我在尝试将getString()值分配给String数组。在代码上方,System.out.println循环内的While打印值,但System.out.println外部打印NULL。任何原因,有人可以请我提供解决方案。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

终于找到了答案。我在while循环中初始化i时犯了一个愚蠢的错误。

int i = 0;
while (iterator.hasNext()) {
    FileItem item = (FileItem) iterator.next();

    if (item.isFormField()) {
        myValues[i] = item.getString();
        System.out.println("my vals: "+myValues[i]); //PRINTS THE VALUES
    }
    i++;
}