我的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,它将检查是否有已上载的文件,如果是,它将解析该文件中的文本为字符串。
提前感谢您的帮助!
答案 0 :(得分:0)
如果您使用的是Servlet3.0
请看这个帖子How to upload files to server using JSP/Servlet?
你会得到类似这样的文件部分
InputStream fileContent = filePart.getInputStream();
将文件内容读取到String
通过Apache IOUtils
String text = IOUtils.toString(inputStream,StandardCharsets.UTF_8.name());
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); } }
使用Java8阅读
public static String read(InputStream input)抛出IOException { try(BufferedReader buffer = new BufferedReader(new InputStreamReader(input))){ return buffer.lines()。collect(Collectors.joining(“\ n”)); } }
希望这有帮助!