我有一个带有输入类型文件的表单。
<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(系统找不到 文件指定)。
我是否需要通过servlet将文件上传到服务器然后访问它? 请帮忙。
答案 0 :(得分:1)
你错了。我们无法访问用户的磁盘。 gridData.heightHint = table.getItemHeight() * 20;
是从您有权访问的磁盘中读取文件。在这种情况下,您的用户和服务器位于不同的计算机上,甚至可能是世界分开的。
为此你需要一个multipart form和一个Java实用程序,它可以为你读取Multipart文件流。
这里有一个Apache Utility就是这样。
如果您更喜欢以纯Java EE风格进行,那么这里是oracle documentation for file uploading的链接。