【问题标题】:Read File to String in Java Servlet在 Java Servlet 中读取文件到字符串
【发布时间】:2014-09-05 22:47:54
【问题描述】:

我的 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,则检查是否有文件已上传,如果有,则将文件中的文本解析为字符串。

提前感谢您的帮助!

【问题讨论】:

  • 基本上你并不想上传文件。您想在 javascript 中读取文件并将其内容放入框中,然后提交不是enctype="multipart/form-data" 的常规表单

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


【解决方案1】:

如果你在 Servlet3.0 上

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

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

InputStream fileContent = filePart.getInputStream();

将文件内容读入字符串

  1. 通过 Apache IOUtils

    字符串文本 = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name());

  2. Java 流读取

    StringBuilder textBuilder = new StringBuilder(); 尝试(阅读器阅读器 = 新的 BufferedReader(新的 InputStreamReader (inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) { 诠释 c = 0; 而 ((c = reader.read()) != -1) { textBuilder.append((char) c); } }

  3. 用 Java8 阅读

    public static String read(InputStream input) throws IOException { 尝试(BufferedReader 缓冲区 = 新 BufferedReader(新 InputStreamReader(输入))){ return buffer.lines().collect(Collectors.joining("\n")); } }

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2010-11-11
    • 2015-05-09
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多