java - 小服务程序 : cut upload header from the servletinputstream

标签 java servlets inputstream

<分区>

我正在编写一个从客户端接收 xml 文件并使用它的 servlet。

我的问题是,在 servletinputstream(我得到的是:request.getInputStream())中,开始和结束时有一些上传信息:

-----------------------------186292285129788
Content-Disposition: form-data; name="myFile"; filename="TASKDATA - Kopie.XML"
Content-Type: text/xml

<XML-Content>

-----------------------------186292285129788--

是否有一种智能解决方案可以将这些线路从 servletinputstream 中删除?

问候

最佳答案

这是一个 multipart/form-data header (在 RFC2388 中指定)。捕获一个完全有值(value)的 multipart/form-data 解析器,而不是重新发明你自己的。 Apache Commons FileUpload是这项工作事实上的标准 API。将所需的 JAR 文件放在 /WEB-INF/lib 中,然后它会很简单:

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()) {
                // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
                String fieldname = item.getFieldName();
                String fieldvalue = item.getString();
                // ... (do your job here)
            } else {
                // Process form file field (input type="file").
                String fieldname = item.getFieldName();
                String filename = FilenameUtils.getName(item.getName());
                InputStream filecontent = item.getInputStream();
                // ... (do your job here)
            }
        }
    } catch (FileUploadException e) {
        throw new ServletException("Cannot parse multipart request.", e);
    }

    // ...
}

再一次强调,不要重新发明你自己的。您真的不想进行维护。

关于java - 小服务程序 : cut upload header from the servletinputstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448748/

相关文章:

java - mouseMoved 方法中的碰撞检测

java - 加载远程 Java 类

java - 每个请求都有一个 DAO 访问权限

java - Spring mvc web.xml错误

java - 无法将 servlet 连接到数据库

java - 如何判断InputStream中是否包含JSON数据?

java - 如何在缓冲数据到达时而不是在缓冲区已满时读取数据?

java - 欧拉计划 #3 - 解决方案永远运行

java - 你需要使用 JDK 运行构建或者有工具 .Jar

java - 简单的 Java 服务器/客户端不工作?