Încărcare fișier JSP & Exemple de programe pentru descărcare fișiere

Cuprins:

Anonim

În acest exemplu, vom învăța despre încărcarea și descărcarea unui fișier prin JSP.

Ieșirea de intrare fișier este operații foarte importante. Aici vom citi și scrie un fișier folosind JSP.

Încărcare fișier JSP

  • Putem încărca orice fișiere folosind JSP.
  • Poate fi un fișier text, fișier binar, fișier imagine sau orice alt document.
  • Aici, în cazul încărcării fișierelor, va fi utilizată doar metoda POST și nu metoda GET.
  • Atributul Enctype trebuie setat la multipart / formular-date.

Exemplu: Utilizarea acțiunii

În acest exemplu, încărcăm un fișier folosind obiectul IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Fișier Guru  Încărcare fișier Guru: Selectați fișierul:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ page import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ page import = "org.apache.commons.fileupload.disk. *"%><% @ page import = "org.apache.commons.fileupload.servlet. *"%><% @ page import = "org.apache.commons.io.output. *"%> Încărcare fișier Guru <%Fișier fișier;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {Fabrica DiskFileItemFactory = new DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (fișier nou ("c: \\ temp"));ServletFileUpload upload = new ServletFileUpload (factory);upload.setSizeMax (maxFileSize);încerca{List fileItems = upload.parseRequest (request);Iterator i = fileItems.iterator ();out.println ("");out.println („”);while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String FieldName = fi.getFieldName ();String FileName = fi.getName ();boolean isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (fișier);out.println ("Numele fișierului încărcat: + filePath + fileName + "
");}}out.println ("");out.println ("");} catch (Exception ex) {System.out.println (ex);}} altceva {out.println ("");out.println („”);out.println ("

Niciun fișier încărcat

");out.println ("");out.println ("");}%>

Explicația codului:

Action_file.jsp

Linia de cod 12-18: Aici creăm formularul cu câmpul fișier, care va încărca fișierul pe server și acțiunea va fi transmisă către action_file_upload.jsp

Action_file_upload.jsp

Linia de cod 20: Aici oferim calea fișierului către o anumită cale

Linia de cod 23-38: Aici verificăm dacă tipul de conținut este multipart / formular-date. Dacă acesta este cazul, conținutul este de tip fișier și este citit. După citirea fișierului, acesta este scris în fișierul temporar și apoi fișierul temporar este convertit în fișierul principal.

Când executați codul de mai sus, obțineți următoarea ieșire

Ieșire:

Încărcăm fișier folosind opțiunea buton alege fișier, iar butonul Încărcare fișier va încărca fișierul pe server pe calea furnizată.

Exemplu: Utilizarea operațiilor JSP

În acest exemplu, vom încărca un fișier folosind operațiile JSP.

Vom lua un formular care va avea butonul „încărcare” și când faceți clic pe butonul de încărcare, atunci fișierul va fi încărcat.

Încărcare_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru Încărcare fișier Fișier:

Explicația codului:

Linia de cod 11-12: Aici luăm un formular care are acțiune pe servlet guru_upload care va trece printr-o metodă POST. De asemenea, aici introducem un atribut care specifică modul în care datele de formular trebuie codificate și trimise către server și sunt utilizate numai cu metoda POST. Aici setăm ca date multipart / formular care este pentru fișier (deoarece datele vor fi mari).

Linia de cod 13: Aici specificăm elementul guru_file cu fișier tip și oferim dimensiunea 50.

Linia de cod 15: Acesta este un buton de tip de trimitere cu numele „Încărcare” prin care se va apela servletul de acțiune și cererea va fi procesată în acesta și fișierul va fi citit și scris în servlet.

Guru_upload.java

demotest pachet;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;clasa publică guru_upload extinde HttpServlet {privat static lung lung serialVersionUID = 1L;public guru_upload () {super();// TODO Stub de constructor generat automat}void protejat doPost (cerere HttpServletRequest, răspuns HttpServletResponse) aruncă ServletException, IOException {if (ServletFileUpload.isMultipartContent (request)) {încerca {Listă  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (request);pentru (element FileItem: multiparts) {if (! item.isFormField ()) {String name = new File (item.getName ()). GetName ();item.write (fișier nou („c: / guru / upload” + File.separator + nume));}}//Fisier uploadat cu succesrequest.setAttribute ("gurumessage", "Fișier încărcat cu succes");} catch (Exception ex) {request.setAttribute ("gurumessage", "Încărcare fișier eșuat din cauza" + ex);}} altceva {request.setAttribute ("gurumessage", "Niciun fișier găsit");}request.getRequestDispatcher ("/ result.jsp"). forward (cerere, răspuns);}}

Explicația codului:

Linia de cod 12-14: Aici va trebui să importăm biblioteca org.apache.commons în configurația codului. Va trebui să importăm clasa fileupload din biblioteca org.apache.commons.

Linia de cod 23: Aici avem metoda doPost (), care va fi numită pe măsură ce trecem metoda POST în JSP și va solicita și răspunde obiectelor ca parametri

Linia de cod 26: Aici creăm un obiect din clasa ServletFileUpload din pachetul fileUpload din biblioteca org.apache.commons care va verifica dacă există obiecte de fișiere în JSP. Dacă s-a găsit vreunul, obiectul respectiv va fi preluat din cerere.

Linia de cod 27-32: Vom itera numărul de fișiere verificând câte element de fișier sunt prezente în obiectul cu mai multe părți care este un obiect listă (dacă încărcăm mai multe fișiere) și îl salvăm în folderul c: / guru / upload cu numele de fișier care a fost furnizat. Scriem fișierul folosind metoda de scriere a fișierului obiect în dosarul menționat.

Linia de cod 34: Dacă nu există nicio excepție, setăm atributul în cerere ca mesaj guru cu valoarea „Fișier încărcat cu succes”.

Linia de cod 35-36: Dacă apare o excepție, atunci setați mesajul că „Încărcarea fișierului a eșuat”

Linia de cod 40: Dacă fișierul nu a fost găsit, atunci setați mesajul ca „Fără fișier găsit”

Linia de cod 42: redirecționarea cererii folosind obiectul requestdispatcher pentru a rezulta.jsp cu obiecte de solicitare și răspuns.

Rezultat.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Rezultat Guru <% String msg = (String) request.getAttribute ("mesaj");out.println (msg);%>

Explicația codului:

Linia de cod 10: Aici obținem atributul de la obiectul de cerere cu valoarea gurumessage într-un obiect șir.

Linia de cod11: Aici tipărim acel mesaj.

Când executăm codul de mai sus, obținem următoarea ieșire

Ieșire:

Primim un formular în care există câmpuri pentru a alege un fișier din director. Odată selectat fișierul, trebuie să facem clic pe butonul de încărcare.

După ce faceți clic pe butonul de încărcare, primim mesajul că fișierul este încărcat cu succes.

În diagrama de mai jos putem vedea că fișierul a fost încărcat în folderul c: / guru / upload.

Descărcarea fișierului:

În acest exemplu, vom descărca un fișier dintr-un director făcând clic pe buton.

Descărcarea_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Exemplu de descărcare Guru Guru Descărcare fișier  Descărcare aici !!! 

Explicația codului:

Linia de cod 10: Aici am dat link pentru a descărca un fișier din folderul c: / guru / upload folosind servletul guru_download.

Guru_download.java

demotest pachet;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Clasa de implementare servlet guru_download* /clasa publică guru_download extinde HttpServlet {privat static lung lung serialVersionUID = 1L;nul protejat doGet (cerere HttpServletRequest, răspuns HttpServletResponse) aruncă ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APLICARE / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nou FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @vezi HttpServlet # doPost (cerere HttpServletRequest, răspuns HttpServletResponse)* /void protejat doPost (cerere HttpServletRequest, răspuns HttpServletResponse) aruncă ServletException, IOException {// TODO Metoda generată automat}}

Explicația codului:

Linia de cod 3-5: Aici importăm FileInputStream, IO Exception și PrintWriter din pachetul java.io.

Linia de cod 15: Definim servletul guru_download care extinde HttpServlet.

Linia de cod 18: După cum am definit un href, care va fi inclus în URL, astfel încât metoda GET va fi procesată (doGet va fi apelat în servlet) care cuprinde și obiecte de solicitare și răspuns.

Linia de cod 19-20: setăm conținutul Tastați obiectul de răspuns și obținem, de asemenea, obiectul scriitor din răspuns.

Linia de cod 21-22: Definirea unei variabile ca gurufile ca valoare test.txt și gurupath ca c: / guru / upload /

Linia de cod 23-25: Setăm tipul de conținut folosind obiectul de răspuns și folosim metoda setHeader care setează antetul în obiectul de răspuns ca nume de fișier care a fost încărcat.

Linia de cod 27-28: Creăm FileInputStream în care vom adăuga gurupath + gurufile.

Linia de cod 31-33: Aici am luat o buclă de timp care va rula până la citirea fișierului, de aceea am dat condiția ca! = -1. În această condiție scriem folosind printwriter object out.

Când executați codul de mai sus, veți obține următoarea ieșire

Ieșire:

Ieșire:

Trebuie să facem clic pe downloading_1.jsp, vom primi un hyperlink ca „Descărcați aici”. Când faceți clic pe acest fișier de hyperlink, acesta va fi descărcat în sistem.

Rezumat:

  • Am aflat despre formularul de înregistrare pentru a ne înregistra în orice aplicație
  • Am aflat mai multe despre cum funcționează formularele de conectare și deconectare.
  • De asemenea, am aflat despre încărcarea și descărcarea unui fișier prin JSP.