2016-04-20 5 views
0

Ich habe ein Formular mit einer Eingabedatei.Hochladen von Excel-Daten in Oracle-Datenbank mit JSP

<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> 

Der Benutzer in der Lage sein sollte, in eine Excel-Datei zu suchen und anschließend auf, mag ich die Excel-Daten in Oracle XE Datenbank hochgeladen werden (I Apache POI verwende).

Allerdings, in der fileUpload.jsp Seite kann ich nicht auf die durchsuchten Datei zugreifen, da es nur den Dateinamen und nicht den gesamten Pfad angibt.

Der Code in fileUpload.jsp ist:

String filename = request.getParameter("qns"); 
InputStream input = new FileInputStream(filename);  
POIFSFileSystem fs = new POIFSFileSystem(input); 

Fehler:

java.io.FileNotFoundException: Abc.xls (The system cannot find the file specified).

Muss ich die Datei auf den Server über Servlet hochladen und dann zugreifen? Bitte helfen.

Antwort

1

Sie folgen falsch. Wir haben keinen Zugriff auf die Festplatte des Benutzers. FileInputStream ist das Lesen der Datei von der Festplatte, auf die Sie zugreifen können. In diesem Fall befinden sich Ihr Benutzer und Ihr Server auf verschiedenen Computern, möglicherweise sogar in einer anderen Welt.

Dafür benötigen Sie eine multipart form und ein Java-Dienstprogramm, das Multipart Dateistream für Sie lesen kann.

Hier ist eine Apache Utility, die genau das tut.

Wenn Sie es bevorzugen, es in einfachen Java EE-Stil zu tun, dann hier ist der Link von der oracle documentation for file uploading.