Java - transfer de fișiere client-server

[Java] Transfer de fișiere client-server

Problema

Ca parte dintr-o aplicație Web din Java, am nevoie, prin intermediul unui formular, ca utilizatorii să poată trimite fișiere (orice tip: registru de lucru Excel, imagine ...) către server, iar acestea din urmă sunt înregistrate în directorul de aplicații.

Problema mea este acum că fișierele nu sunt complet restaurate (bine cred că sunt, dar am o problemă cu scrierea), vă explic: când am încărcat fișierul "Blabla. Txt", al cărui conținut este "Bună ziua, suntem joi, 16 iulie 2009 și cerul este însorit ", atunci fișierul salvat pe server este:" Blabla.txt "cu conținut:" oju, naked omsl ed tl 6Jilt20 ileteslil. "Poate fi observat concentrându-se pe acest nonsens că o scrisoare a fost scrisă doar două. În cazul unei imagini, nu pot face testul deoarece nu îl puteți vedea după ce a parcurs acest traseu.

Această constatare mă face să cred că aceasta este o problemă de codificare, dar din moment ce nu știu nimic ... nu pot fi sigură.

Pe scurt, aici este codul meu:

 boolean isMultipart FileUpload.isMultipartContent = (cerere); DiskFileUpload DiskFileUpload încărcați = new (); Lista articolelor = null; încercați {upload.parseRequest items = (request); } Catch (FileUploadException e) {} String fileName = ((FileItem) items.get (0)). GetName (); fișierName = nomFichier.substring (nomFichier.lastIndexOf ("\\") +1); Made InputStream = null; did = (InputStream) ((FileItem) items.get (0)). getInputStream (); FileOutputStream fos = fișierul FileOutputStream nou (fișier nou ("MyFolder /" + nume_fișier)); în timp ce (fis.read ()! = -1) {fos.write (fis.read ()); } fos.close (); fis.close (); La JSP, formularul codifică mai multe părți: 

Deci, aici, după multe cercetări pentru a ajunge la acest punct, de data asta sunt mort și cercetarea mea nu deblochez.

Dacă te inspiră, te rog să-mi dai sfaturi și dacă mă înșel despre metodă și e mult mai ușor, nu ezita! Vă mulțumim că ați citit și că ați făcut o zi bună.

Soluţie

Ok, mi-am dat seama doar după ce am postat acest mesaj:

Fac un dublu fis.read (), atat de normal incat am sarit caracterele ...

Sunt așa de rușine, dar las acest mesaj dacă poate ajuta pe unii. :)

Aceasta a corectat melodia (doar bucla condiționată):

 int fisread fis.read = (); în timp ce (fisread! = -1) {fos.write (fisread); fisread fis.read = (); } 

Notă

Rezolvată de Asefthu

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi