JSP fájlfeltöltés & Fájlletöltési programok példái

Tartalomjegyzék:

Anonim

Ebben a példában megismerkedünk egy fájl JSP-n keresztüli feltöltésével és letöltésével.

A fájlbemenet nagyon fontos műveletek. Itt egy fájlt fogunk olvasni és írni a JSP segítségével.

JSP fájlfeltöltés

  • Bármilyen fájlt feltölthetünk a JSP segítségével.
  • Ez lehet szöveges fájl, bináris fájl, képfájl vagy bármilyen más dokumentum.
  • Itt fájlfeltöltés esetén csak a POST módszert kell használni, a GET metódust nem.
  • Az Enctype attribútumot multipart / form-data értékre kell állítani.

Példa: Művelet használata

Ebben a példában egy fájlt töltünk fel IO objektummal

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru fájl  Guru fájlfeltöltés: Válassza ki a fájlt:

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. *"%> Guru fájlfeltöltés <%Fájl fájl;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory gyár = new DiskFileItemFactory ();gyár.setSizeThreshold (maxMemSize);factory.setRepository (új Fájl ("c: \\ temp"));ServletFileUpload upload = új ServletFileUpload (gyári);upload.setSizeMax (maxFileSize);próbáld ki{List fileItems = upload.parseRequest (kérés);Iterátor i = fileItems.iterator ();out.println ("");out.println ("");míg (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String mezőnév = fi.getFieldName ();Karakterláncfájlnév = fi.getName ();logikai isInMemory = fi.isInMemory ();hosszú méretInBytes = fi.getSize ();file = new File (filePath + "fájlNév");fi.write (fájl);out.println ("Feltöltött fájlnév: + filePath + fileName + "
");}}out.println ("");out.println ("");} fogás (ex kivétel ex) {System.out.println (ex);}}más{out.println ("");out.println ("");out.println ("

Nincs feltöltve fájl

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

A kód magyarázata:

Action_file.jsp

Kódsor 12-18: Itt létrehozunk egy űrlapot fájlmezővel, amely feltölti a fájlt a szerverre, és a művelet átkerül az action_file_upload.jsp címre.

Action_file_upload.jsp

20. kódsor: Itt a fájl elérési útját adjuk meg egy adott elérési útnak

Kódsor 23-38: Itt ellenőrizzük, hogy a tartalom típusa többrészes / form-adat. Ha ez a helyzet, akkor a tartalom fájltípusú, és beolvassa. A fájl elolvasása után beíródik az ideiglenes fájlba, majd az ideiglenes fájl konvertálódik a fő fájlba.

A fenti kód végrehajtásakor a következő kimenetet kapja

Kimenet:

Fájl feltöltése a fájl kiválasztása gomb opcióval történik, és a Fájl feltöltése gomb feltölti a fájlt a szerverre a megadott elérési útvonalon.

Példa: JSP műveletek használata

Ebben a példában egy fájlt fogunk feltölteni JSP műveletek segítségével.

Egy űrlapot fogunk feltölteni, amelyen lesz egy "feltöltés" gomb, és amikor a feltöltés gombra kattint, akkor a fájl feltöltésre kerül.

Feltöltés_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru fájl feltöltése Fájl:

A kód magyarázata:

Kódsor 11-12: Itt egy olyan formát veszünk fel, amely a guru_upload szervlet kisalkalmazással rendelkezik, amely átmegy a POST metóduson. Ezenkívül itt írjuk le az encctype azaz attribútumot, amely meghatározza, hogy az űrlap adatokat hogyan kell kódolni és elküldeni a szerverre, és csak a POST metódussal használható. Itt többrészes / űrlap-adatként állítjuk be a fájlt (mivel az adatok nagyok lesznek).

13. kódsor : Itt adjuk meg a guru_file elemet, amelynek típusa fájl és 50-es méretet adunk meg.

15. kódsor: Ez egy beküldési típusú gomb, rajta a "Feltöltés" névvel, amelyen keresztül a művelet szervlet meghívásra kerül, és a kérelem erre feldolgozódik, a fájl pedig olvasható és beírható a szervletbe.

Guru_upload.java

csomag demotest;import java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;importálja a javax.servlet.http.HttpServlet;importálja a javax.servlet.http.HttpServletRequest;importálja a javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;a guru_upload nyilvános osztály kiterjeszti a HttpServlet {privát statikus végső hosszú serialVersionUID = 1L;nyilvános guru_upload () {szuper();// TODO Auto-generált konstruktor csonk}védett void doPost (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {if (ServletFileUpload.isMultipartContent (kérelem)) {próbáld ki {Sorolja fel a  multiparts = new ServletFileUpload (új DiskFileItemFactory ()) parseRequest (kérés);for (FileItem item: multiparts) {if (! item.isFormField ()) {Karakterlánc neve = új fájl (item.getName ()). GetName ();item.write (új File ("c: / guru / upload" + File.separator + név));}}//Fájl sikeresen feltöltverequest.setAttribute ("gurumessage", "Fájl sikeresen feltöltve");} fogás (ex kivétel ex) {request.setAttribute ("gurumessage", "A fájl feltöltése nem sikerült a" + ex miatt ");}}más{request.setAttribute ("gurumessage", "Nem található fájl");}request.getRequestDispatcher ("/ result.jsp"). továbbítás (kérés, válasz);}}

A kód magyarázata:

Kódsor 12-14: Itt importálnunk kell az org.apache.commons könyvtárat a kód konfigurációjába. Importálni kell a fileupload osztályt az org.apache.commons könyvtárból.

23. kódsor : Itt van a doPost () metódus, amelyet akkor hívunk meg, amikor a JOST-ban átadjuk a POST metódust, és paraméterként objektumokat kér és válaszol

26. kódsor : Itt létrehozunk egy ServletFileUpload osztály objektumot az org.apache.commons könyvtár fileUpload csomagjából, amely ellenőrzi, hogy vannak-e fájlobjektumok a JSP-ben. Ha van ilyen, akkor a fájlobjektumot lekérjük a kérésből.

Kódsor 27-32: Megismételjük a fájlok számát annak ellenőrzésével, hogy hány fájlelem van a többrészes objektumban, amely egy listaobjektum (ha egynél több fájlt töltünk fel), és elmentjük a c: / guru / upload mappába a megadott fájlnév. A fájlt a fájlobjektum írási módszerével írjuk a már említett mappába.

34. kódsor : Ha nincs kivétel, akkor a kérelemben az attribútumot gurumessage-ként állítjuk be a "Fájl sikeresen feltöltve" értékkel.

35-36 kódsor: Ha kivétel lép fel, akkor állítsa be a "Fájl feltöltése sikertelen" üzenetet

40. kódsor: Ha a fájl nem található, akkor az üzenet beállítása "Nincs fájl"

42. kódsor : Kérelem továbbítása requestdispatcher objektum használatával a result.jsp-re kérés- és válaszobjektumokkal.

Eredmény.jsp

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

A kód magyarázata:

10. kódsor : Itt a gurumessage értékű kérésobjektumból kapjuk az attribútumot egy string objektumba.

Kódsor11: Itt nyomtatjuk ki ezt az üzenetet.

A fenti kód végrehajtásakor a következő kimenetet kapjuk

Kimenet:

Kapunk egy űrlapot, amelyben vannak mezők a fájl kiválasztásához a könyvtárból. A fájl kiválasztása után a feltöltés gombra kell kattintanunk.

Ha a feltöltés gombra kattint, megkapjuk az üzenetet, hogy a fájl feltöltése sikeres volt.

Az alábbi ábrán láthatjuk, hogy a fájlt feltöltötték a c: / guru / upload mappába.

Fájl letöltése:

Ebben a példában a gombra kattintva letöltenünk egy fájlt egy könyvtárból.

Letöltés_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru példa letöltése Guru Fájl letöltése  Töltse le innen !!! 

A kód magyarázata:

10. kódsor : Itt megadtuk a linket egy fájl letöltésére a c: / guru / upload mappából a guru_download szervlet segítségével.

Guru_download.java

csomag demotest;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;importálja a javax.servlet.http.HttpServlet;importálja a javax.servlet.http.HttpServletRequest;importálja a javax.servlet.http.HttpServletResponse;/ *** Servlet implementációs osztály guru_download* /a guru_download nyilvános osztály kiterjeszti a HttpServlet {privát statikus végső hosszú serialVersionUID = 1L;védett void doGet (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Karakterlánc gurufile = "test.txt";Karakterlánc gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "melléklet; fájlnév = \" "+ gurufájl + "\" ");FileInputStream fileInputStream = új FileInputStream (gurupath+ gurufájl);int i;míg (((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @ lásd HttpServlet # doPost (HttpServletRequest kérés, HttpServletResponse válasz)* /védett void doPost (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {// TODO Automatikusan létrehozott módszercsonk}}

A kód magyarázata:

3-5. Sor: Itt importáljuk a FileInputStream, IO Exception és PrintWriter programokat a java.io csomagból.

15. kódsor : Meghatározzuk a guru_download szervletet, amely kiterjeszti a HttpServlet-t.

18. kódsor : Amint definiáltunk egy href-et, amely az URL-be lesz csatolva, a GET metódus feldolgozásra kerül (a doGet-t meghívjuk a szervletben), amely a kérelem és a válasz objektumokat is tartalmazza.

Kódsor 19-20: Beállítunk tartalom típust a válaszobjektumban, és az író objektumot is kapjuk a válaszból.

Kódsor 21-22: A változó definiálása gurufile-ként a test.txt és a gurupath c-ként: / guru / upload /

Kódsor 23-25: A tartalomtípust válaszobjektum segítségével állítjuk be, és a setHeader metódust használjuk, amely a fejlécet a válaszobjektumba feltöltött fájlnévként állítja be.

Kódsor 27-28: Létrehozzuk a FileInputStream-et, amelyben hozzáadjuk a gurupath + gurufile fájlt.

Kódsor 31-33: Itt vettünk egy ideig ciklust, amely a fájl beolvasásáig fog futni, ezért a! = -1 feltételnek adtuk meg. Ebben az állapotban a printwriter object out használatával írunk.

A fenti kód végrehajtásakor a következő kimenetet kapja

Kimenet:

Kimenet:

Kattintson a letöltés_1.jsp linkre, és kapunk egy hiperhivatkozást a "Letöltés ide" néven. Amikor rákattint erre a hiperhivatkozási fájlra, az letöltésre kerül a rendszerbe.

Összegzés:

  • Megtanultuk a regisztrációs űrlapot, hogy regisztrálhassunk bármilyen alkalmazásba
  • További információ a bejelentkezési és kijelentkezési űrlapok működéséről.
  • Ismerkedett meg egy fájl feltöltésével és letöltésével a JSP-n keresztül.