我有一个带有输入类型文件的表单。
<form id="upload" action="fileUpload.jsp" method="post">
<input type="file" id="qns" name="qns" accept=".xls,.xlsx"><br><br>
<input type="submit" id="uploadFile" value="Upload File">
</form>
用户应该能够浏览到 Excel 文件,并在提交时,我希望将 Excel 数据上传到 Oracle XE 数据库(我使用的是 apache POI)。
但是,在 fileUpload.jsp
页面中,我无法访问浏览的文件,因为它只提供文件名而不提供整个路径。
fileUpload.jsp中的代码是:
String filename = request.getParameter("qns");
InputStream input = new FileInputStream(filename);
POIFSFileSystem fs = new POIFSFileSystem(input);
错误:
java.io.FileNotFoundException: Abc.xls (The system cannot find the file specified).
我需要通过servlet将文件上传到服务器然后访问它吗? 请帮忙。
最佳答案
你的理解是错误的。我们无法访问用户的磁盘。 FileInputStream
是从您有权访问的磁盘中读取文件。在这种情况下,您的用户和服务器位于不同的计算机上,甚至可能相距甚远。
为此,您需要 multipart form以及一个可以为您读取多部分文件流的 Java 实用程序。
这是一个Apache Utility正是这样做的。
如果您更喜欢以简单的 Java EE 风格进行操作,那么这里是来自 oracle documentation for file uploading 的链接。 .
关于java - 使用 JSP 将 Excel 数据上传到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744264/