JSP-tiedostojen lataus & Esimerkkejä tiedostojen latausohjelmista

Sisällysluettelo:

Anonim

Tässä esimerkissä aiomme oppia tiedoston lataamisesta ja lataamisesta JSP: n kautta.

Tiedostotulosteet ovat erittäin tärkeitä toimintoja. Täällä aiomme lukea ja kirjoittaa tiedoston JSP: llä.

JSP-tiedostojen lataus

  • Voimme ladata tiedostot JSP: n avulla.
  • Se voi olla tekstitiedosto, binaaritiedosto, kuvatiedosto tai mikä tahansa muu asiakirja.
  • Tässä tiedostojen lataamisen yhteydessä käytetään vain POST-menetelmää eikä GET-menetelmää.
  • Enctype-määritteeksi tulisi asettaa multipart / form-data.

Esimerkki: Toiminnon käyttäminen

Tässä esimerkissä lataamme tiedoston IO-objektilla

Toimintotiedosto.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-tiedosto  Guru-tiedoston lataus: Valitse tiedosto:

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-tiedoston lataus <%Tiedostotiedosto;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Merkkijono contentType = request.getContentType ();if ((contentType.indexOf ("moniosainen / lomake-data")> = 0)) {DiskFileItemFactory tehdas = uusi DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (uusi tiedosto ("c: \\ temp"));ServletFileUpload upload = uusi ServletFileUpload (tehdas);upload.setSizeMax (maxFileSize);yrittää{Luettele fileItems = upload.parseRequest (pyyntö);Iteraattori i = fileItems.iterator ();out.println ("");out.println ("");kun (i.hasNext ()){FileItem fi = (FileItem) i.seuraava ();if (! fi.isFormField ()) {MerkkijonokenttäNimi = fi.getFieldName ();Merkkijonotiedostonimi = fi.getName ();totuusarvo onInMemory = fi.isInMemory ();pitkä kokoInBytes = fi.getSize ();tiedosto = uusi tiedosto (filePath + "tiedostotunnuksesi");fi.write (tiedosto);out.println ("Ladatun tiedostonimi: + filePath + fileName + "
");}}out.println ("");out.println ("");} saalis (poikkeus ex) {System.out.println (ex);}}muu{out.println ("");out.println ("");out.println ("

Ei tiedostoja ladattu

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

Koodin selitys:

Toimintotiedosto.jsp

Koodirivi 12-18: Tässä luodaan lomake tiedostokentällä, joka lähettää tiedoston palvelimelle ja toiminto välitetään action_file_upload.jsp

Action_file_upload.jsp

Koodirivi 20: Tässä annetaan tiedostopolku tietylle polulle

Koodirivi 23-38: Tässä tarkistetaan, onko sisältötyyppi moniosainen / lomake-data. Jos näin on, sisältö on tiedostotyyppiä ja se luetaan. Kun tiedosto on luettu, se kirjoitetaan väliaikaiseen tiedostoon ja sitten väliaikainen tiedosto muunnetaan päätiedoksi.

Kun suoritat yllä olevan koodin, saat seuraavan tuloksen

Tuotos:

Lähetämme tiedostoa valitsemalla tiedosto-painike -vaihtoehto ja lataustiedosto-painike lähettää tiedoston palvelimelle annettuun polkuun.

Esimerkki: JSP-toimintojen käyttäminen

Tässä esimerkissä aiomme ladata tiedoston käyttämällä JSP-toimintoja.

Otamme lomakkeen, jossa on "lataa" -painike ja kun napsautat latauspainiketta, tiedosto lähetetään.

Ladataan_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru lähettää tiedostoa Tiedosto:

Koodin selitys:

Koodirivi 11-12: Tässä valitaan muoto, jolla on toiminto servlet-palvelussa guru_upload, joka kulkee menetelmän POST kautta. Lisäksi tässä kirjoitetaan eli attribuutti, joka määrittää, miten lomaketiedot tulisi koodata ja lähettää palvelimelle, ja sitä käytetään vain POST-menetelmällä. Tässä asetamme multipart / form-data, joka on tiedostolle (koska tiedot ovat suuria).

Koodirivi 13: Tässä määritetään guru_file-elementti tyyppitiedostolla ja annetaan koolle 50.

Koodirivi 15: Tämä on lähetystyyppipainike, jolla on nimi "Lataa", jonka kautta toimintoservlet kutsutaan ja pyyntö käsitellään siihen ja tiedosto luetaan ja kirjoitetaan servletiin.

Guru_upload.java

paketin demotest;tuo java.io.File;tuo java.io.IOException;tuo java.util.List;tuo javax.servlet.ServletException;tuo javax.servlet.http.HttpServlet;tuo javax.servlet.http.HttpServletRequest;tuo javax.servlet.http.HttpServletResponse;tuo org.apache.commons.fileupload.FileItem;tuo org.apache.commons.fileupload.disk.DiskFileItemFactory;tuo org.apache.commons.fileupload.servlet.ServletFileUpload;julkisen luokan guru_upload laajentaa HttpServlet {yksityinen staattinen lopullinen pitkä serialVersionUID = 1L;julkinen guru_upload () {super ();// TODO Automaattisesti luotu rakentajan tynkä}suojattu void doPost (HttpServletRequest-pyyntö, HttpServletResponse vastaus) heittää ServletException, IOException {if (ServletFileUpload.isMultipartContent (pyyntö)) {yrittää {Luettelo  multiparts = uusi ServletFileUpload (uusi DiskFileItemFactory ()). ParseRequest (pyyntö);kohteelle (FileItem item: multiparts) {if (! item.isFormField ()) {Merkkijonon nimi = uusi tiedosto (item.getName ()). GetName ();item.write (uusi tiedosto ("c: / guru / upload" + File.separator + nimi));}}//Tiedosto ladattu onnistuneestirequest.setAttribute ("gurumessage", "Tiedosto ladattu onnistuneesti");} saalis (poikkeus ex) {request.setAttribute ("gurumessage", "Tiedoston lataaminen epäonnistui" + ex: n vuoksi);}}muu{request.setAttribute ("gurumessage", "Tiedostoa ei löydy");}request.getRequestDispatcher ("/ result.jsp"). eteenpäin (pyyntö, vastaus);}}

Koodin selitys:

Koodirivi 12-14: Täällä meidän on tuotava org.apache.commons-kirjasto koodin kokoonpanoon. Meidän on tuotava tiedostojen latausluokka org.apache.commons-kirjastosta.

Koodirivi 23: Tässä on doPost () -menetelmä, jota kutsutaan, kun ohitamme POST-menetelmän JSP: ssä, ja se pyytää ja vastaa objektien parametreina

Koodirivi 26: Tässä luomme ServletFileUpload-luokan objektin orgUpache.commons-kirjastosta FileUpload-paketista, joka tarkistaa, onko JSP: ssä tiedostoobjekteja. Jos löytyy, tiedostoobjekti otetaan pyynnöstä.

Koodirivi 27-32: Toistamme tiedostojen lukumäärän tarkistamalla, kuinka monta tiedostokohtaa on luetteloobjektissa olevassa moniosaisessa objektissa (jos lähetämme useita tiedostoja) ja tallennamme sen c: / guru / upload -kansioon annettu tiedostonimi. Kirjoitamme tiedoston tiedostoobjektin kirjoitusmenetelmällä mainittuun kansioon.

Koodirivi 34: Jos ei ole poikkeusta, asetamme pyynnössä määritteen gurumessage-arvoksi "Tiedoston lataus onnistui".

Koodirivi 35-36: Jos tapahtuu poikkeus, asetetaan viesti "Tiedoston lataaminen epäonnistui"

Koodirivi 40: Jos tiedostoa ei löydy, asetetaan viestiksi "Ei tiedostoa löydetty"

Koodirivi 42: Pyynnön edelleenlähetys requestdispatcher-objektilla tulokseen.jsp pyyntö- ja vastausobjekteilla.

Tulos. Jsp

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

Koodin selitys:

Koodirivi 10: Tässä haetaan attribuutti pyyntöobjektilta, jonka arvo on gurumessage, merkkijono-objektiksi.

Koodirivi 11: Tässä tulostamme tämän viestin.

Kun suoritamme yllä olevan koodin, saamme seuraavan tuloksen

Tuotos:

Saamme lomakkeen, jossa on kenttiä tiedoston valitsemiseksi hakemistosta. Kun tiedosto on valittu, meidän on napsautettava latauspainiketta.

Kun latauspainiketta napsautetaan, saamme viestin, että tiedosto on ladattu onnistuneesti.

Alla olevasta kaaviosta voimme nähdä, että tiedosto oli ladattu c: / guru / upload-kansioon.

Ladataan tiedostoa:

Tässä esimerkissä aiomme ladata tiedoston hakemistosta napsauttamalla painiketta.

Ladataan_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-esimerkin lataaminen Guru Tiedostoa ladataan  Lataa täältä !!! 

Koodin selitys:

Koodirivi 10: Tässä on annettu linkki tiedoston lataamiseksi kansiosta c: / guru / upload käyttäen servlet-sovellusta guru_download.

Guru_download.java

paketin demotest;tuo java.io.FileInputStream;tuo java.io.IOException;tuo java.io.PrintWriter;tuo javax.servlet.ServletException;tuo javax.servlet.http.HttpServlet;tuo javax.servlet.http.HttpServletRequest;tuo javax.servlet.http.HttpServletResponse;/ *** Servlet-sovelluksen luokka guru_download* /julkisen luokan guru_download laajentaa HttpServlet {yksityinen staattinen lopullinen pitkä serialVersionUID = 1L;suojattu void doGet (HttpServletRequest-pyyntö, HttpServletResponse vastaus) heittää ServletException, IOException {response.setContentType ("teksti / html");PrintWriter out = vastaus.getWriter ();Merkkijono gurufile = "test.txt";Merkkijono gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "liite; tiedostonimi = \" "+ gurufile + "\" ");FileInputStream fileInputStream = uusi FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {kirjoita (i);}fileInputStream.close ();out.close ();}/ *** @ katso HttpServlet # doPost (HttpServletRequest-pyyntö, HttpServletResponse vastaus)* /suojattu void doPost (HttpServletRequest-pyyntö, HttpServletResponse vastaus) heittää ServletException, IOException {// TODO Automaattisesti luotu menetelmän tynkä}}

Koodin selitys:

Koodirivi 3-5: Tuodaan FileInputStream, IO Exception ja PrintWriter java.io-paketista.

Koodirivi 15: Määritämme guru_download-palvelinsovelluksen, joka laajentaa HttpServlet-tiedostoa.

Koodirivi 18: Kuten olemme määritelleet href- koodin , joka liitetään URL-osoitteeseen, niin GET-menetelmä käsitellään (doGet kutsutaan palvelinsovelluksessa), joka myös sulkee pyyntö- ja vastausobjektit.

Koodirivi 19-20: Asetamme sisältötyyppiä vasteobjektiksi ja saamme myös kirjoittajaobjektin vastauksesta.

Koodirivi 21-22: Määritetään muuttuja gurufile-arvoksi test.txt ja gurupath muodossa c: / guru / upload /

Koodirivi 23-25: Asetamme sisältötyyppiä vastausobjektilla ja käytämme setHeader-menetelmää, joka asettaa otsikon vastausobjektiksi ladattuna tiedostonimenä.

Koodirivi 27-28: Luomme FileInputStreamia, johon lisätään gurupath + gurufile.

Koodirivi 31-33: Tässä on otettu jonkin aikaa silmukka, joka toimii, kunnes tiedosto luetaan, joten olemme antaneet ehdon! = -1. Tässä tilassa kirjoitamme käyttäen printwriter object out -ohjelmaa.

Kun suoritat yllä olevan koodin, saat seuraavan tuloksen

Tuotos:

Tuotos:

Meidän on napsautettava downloading_1.jsp, jolloin saat hyperlinkin nimellä "Lataa tästä". Kun napsautat tätä hyperlinkkitiedostoa, se ladataan järjestelmään.

Yhteenveto:

  • Olemme oppineet rekisteröintilomakkeesta rekisteröityäksesi mihin tahansa sovellukseen
  • Lisätietoja siitä, miten sisään- ja uloskirjautumislomakkeet toimivat.
  • Opi myös tiedostojen lataamisesta ja lataamisesta JSP: n kautta.