[ solic @ 06.04.2008. 21:37 ] @
| U pitanju je web aplikacija. Potrebno je da se izvrsi upload XML fajla sa klijenta na server i da se pri tom taj xml fajl smesti u bazu.
Citanje iz xml fajla i smestanje podataka u bazu sam nekako reshio , ali mi je problem kako da prebacim xml fajl na server da bi ga mogao ucitati.
Ideja je da na jednoj JSP stranici imam button koji , kada se klikne, otvara okvir za dijalog da se izabere xml fajl i da se onda izvrsi prebacivanje
fajla na server a zatim i njegovo smestanje u bazu.
Da li neko ima ideju kako to da se uradi? |
[ milan.dinic @ 07.04.2008. 08:24 ] @
ovo zvuci kao zadatak iz elektronskog poslovanja...
mozes koristiti biblioteku commons-fileupload, a posto je text(xml) u pitanju, mozes dodati ove linije koda u servlet:
BufferedReader fileReader=null;
StringBuffer stringBuffer=new StringBuffer();
String stringLine=null;
fileReader=request.getReader();
while ((stringLine=fileReader.readLine())!=null){
stringBuffer.append("\n");
stringBuffer.append(stringLine);
}
i xml ce biti u stringBuffer-u :)
na JSP-u, je bitno da za formu koju submit-ujes postavis tag enctype="multipart/form-data"
[ solic @ 07.04.2008. 12:18 ] @
Hvala na odgovoru ali i dalje mi to ne reshava problem.
Za parsiranje XML dokumenta koristim SAX parser , zato sto su xml fajlovi dosta veliki (nekoliko MB do 10 i vise MB).
Evo primera koda:
SAXParserFactory radionica = SAXParserFactory.newInstance();
SAXParser saxRasclanjivac = radionica.newSAXParser();
DefaultHandler obradjivac = new DefaultHandler(){
... ovde ide implementacija metoda ....
}
saxRasclanjivac.parse(fileReader, obradjivac);
prvi argument metoda parse je ili File ili inputStream.
Kada uzmem:
ServletInputStream fileReader = request.getInputStream() i kada ga prosledim kao prvi argument - javlja
gresku da je : org.xml.sax.SAXParseException: Premature end of file.
Kada uzmem sa servera : File f = new File("nekiFajl.xml") i prosledim ga kao
saxRasclanjivac.parse(fileReader, obradjivac); sve radi Ok.
Kako to da reshim?
[ milan.dinic @ 07.04.2008. 13:01 ] @
kada dobijes xml kao string na serveru, snimi ga u fajl, i nakon toga mozes da koristis koji god hoces parser.
a napomenuo sam da postoji biblioteka commons-fileupload kojom ces dobiti File instancu za svaki upload-ovan file. nesto vise o njoj mozes naci na
http://commons.apache.org/fileupload/
[ solic @ 07.04.2008. 16:30 ] @
Hvala ti jos jednom.
Sada cu probati pomocu fileuplod-a
[ solic @ 07.04.2008. 20:33 ] @
Reshio sam pomocu biblioteke common-fileupload.
Evo koda ako nekom zatreba:
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
File uploadedFile = new File("NekaPutanjaSaImenomFajla.xml"); //putanja na serveru
try{
// Parse the request
List items = upload.parseRequest(request); /* FileItem */
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
item.write(uploadedFile);
break; //ovde mora break zato sto je uzimao jos neke parametre
}
}catch(Exception ioe){
System.out.println("Greska kod prenosa fajla na server!");
}
nakon ovoga dobijam fajl na serveru a to je uploadedFile , koji se dalje moze procesirati.
Hvala Milane jos jednom :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.