在Java Servlet中读取文件到字符串

时间:2014-07-15 16:20:47

标签: java html servlets file-upload file-io

我的HTML页面中有一个表单,用户填写两个文本字段或上传两个文件,然后单击一个按钮进行提交。以下是表单的代码:

<form name="submitButton" action="DAOserv" method="POST" enctype="multipart/form-data">
                <div id="SQL_form">
                    <div >
                        <textarea name="SQL" placeholder="BAU Reason"
                            rows="11"></textarea>
                        <label for="BAUInputFile">BAU File</label> <input type="file"
                            id="BAUInputFile">
                    </div>
                </div>

                <div >
                    <div >
                        <textarea name="BAU" placeholder="SQL Queries"
                            rows="11"></textarea>
                        <label for="SQLInputFile">SQL File</label> <input type="file"
                            id="SQLInputFile">
                    </div>
                </div>
                <button type="submit" >Submit</button>
            </form>

为了澄清,第一个DIV包含一组查询的文本框和文件上传按钮,第二个DIV包含一个文本框和文件上传按钮,用于商业原因。用户必须上传文件或写入两个部分中的每一部分。

点击按钮提交两个表单字段,但我无法弄清楚或找到在线解决方案(大多数关于将文件上传到servlet目录的帖子)是如何简单地将文件读取到字符串,当用户将文件上传到两个表单字段中的一个或两个时。

本质上,servlet将检查每个文本字段,如果它为null,它将检查是否有已上载的文件,如果是,它将解析该文件中的文本为字符串。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您使用的是Servlet3.0

请看这个帖子How to upload files to server using JSP/Servlet?

你会得到类似这样的文件部分

InputStream fileContent = filePart.getInputStream();

将文件内容读取到String

  1. 通过Apache IOUtils

    String text = IOUtils.toString(inputStream,StandardCharsets.UTF_8.name());

  2. Java Stream阅读

    StringBuilder textBuilder = new StringBuilder();     try(Reader reader = new BufferedReader(new InputStreamReader       (inputStream,Charset.forName(StandardCharsets.UTF_8.name())))){         int c = 0;         while((c = reader.read())!= -1){             textBuilder.append((char)c);         }     }

  3. 使用Java8阅读

    public static String read(InputStream input)抛出IOException {         try(BufferedReader buffer = new BufferedReader(new InputStreamReader(input))){             return buffer.lines()。collect(Collectors.joining(“\ n”));         }     }

  4. 希望这有帮助!