在Servlet中处理上传的文件内容并在jsp中打印内容

时间:2012-12-02 10:20:57

标签: jsp servlets apache-commons apache-commons-fileupload

首先,我必须声明我是jsp / servlet新手,试图了解它的机制 INTRO:
自从我阅读使用 Apache-Commons-FileUpload 3.0 this教程后,Servlet成功上传.txt文件,并将文件存储在Tomcat的 wtpwebapps / MyProject / upload 文件夹。
这是UploadServlet的doPost方法的重要部分,它与引用的教程中的相同:

try {
        // parses the request's content to extract file data
        List formItems = upload.parseRequest(request);
        Iterator iter = formItems.iterator();

        // iterates over form's fields
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();
            // processes only fields that are not form fields
            if (!item.isFormField()) {
                String fileName = new File(item.getName()).getName();
                String filePath = uploadPath + File.separator + fileName;
                File storeFile = new File(filePath);                     
                // saves the file on disk
                item.write(storeFile);
            }
        }
        request.setAttribute("message", "Upload has been done successfully!");
    } catch (Exception ex) {
        request.setAttribute("message", "There was an error: " + ex.getMessage());
    }
    getServletContext().getRequestDispatcher("/message.jsp").forward(request, response);
}

}

在代码段结束时,程序员指定将在 /messages.jsp 文件中打印的消息文本。

问题:
在设置请求属性之前,我如何获取上传的文件作为流,逐行执行(使用 BufferedReader 或类似),关闭流并将其作为... 发送String [] 例如,通过容器的请求对象到 /message.jsp

1 个答案:

答案 0 :(得分:1)

FileItemgetInputStream()方法。调用它,使用返回的输入流读取文件,用List<String>填充其内容,并将列表作为属性添加到请求中。