Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 4.311 pregleda

Najnovija ↓

Kako da prebacim XML fajl sa klijenta na server 06.04.2008. u 22:37 · pre 226 meseci #1
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?
Re: Kako da prebacim XML fajl sa klijenta na server 07.04.2008. u 09:24 · pre 226 meseci #2
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"
Re: Kako da prebacim XML fajl sa klijenta na server 07.04.2008. u 13:18 · pre 226 meseci #3
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?
Re: Kako da prebacim XML fajl sa klijenta na server 07.04.2008. u 14:01 · pre 226 meseci #4
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/
Re: Kako da prebacim XML fajl sa klijenta na server 07.04.2008. u 21:33 · pre 226 meseci #6
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 :)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme