JSP-faili üleslaadimine & Failide allalaadimisprogrammi näited

Lang L: none (table-of-contents):

Anonim

Selles näites tutvume failide üleslaadimise ja allalaadimisega JSP kaudu.

Failisisendi väljund on väga olulised toimingud. Siin loeme ja kirjutame faili JSP abil.

JSP-faili üleslaadimine

  • Saame JSP abil mis tahes faile üles laadida.
  • See võib olla tekstifail, binaarfail, pildifail või mis tahes muu dokument.
  • Siin kasutatakse failide üleslaadimise korral ainult POST-meetodit, mitte GET-meetodit.
  • Atribuudiks Enctype tuleks määrata multipart / form-data.

Näide: Actioni kasutamine

Selles näites laadime faili üles IO objekti abil

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru fail  Guru faili üleslaadimine: Valige fail:

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 faili üleslaadimine <%Failifail;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;StringifailPath = "E: / guru99 / andmed";String contentType = request.getContentType ();kui ((contentType.indexOf ("mitmeosaline / vormi andmed")> = 0)) {DiskFileItemFactory tehas = uus DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (uus fail ("c: \\ temp"));ServletFileUpload upload = uus ServletFileUpload (tehas);upload.setSizeMax (maxFileSize);proovige {Loendi fileItems = upload.parseRequest (taotlus);Iteraator i = fileItems.iterator ();out.println ("");out.println ("");samas (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {StringiväljaNimi = fi.getFieldName ();StringifailNimi = fi.getName ();tõeväärtus isInMemory = fi.isInMemory ();pikk suurusInBytes = fi.getSize ();file = uus fail (filePath + "teieFileName");fi.write (fail);out.println ("Üleslaaditud failinimi: + filePath + fileName + "
");}}out.println ("");out.println ("");} saak (erand ex) {System.out.println (ex);}} veel {out.println ("");out.println ("");out.println ("

Ühtegi faili pole üles laaditud

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

Koodi selgitus:

Action_file.jsp

Koodirida 12-18: siin loome vormi failiväljaga, mis laadib faili serverisse üles ja toiming edastatakse saidile action_file_upload.jsp

Action_file_upload.jsp

Koodirida 20: siin anname faili tee kindlale teele

Koodirida 23-38: siin kontrollime, kas sisutüüp on mitmeosaline / vormi-andmed. Sellisel juhul on sisu failitüüp ja seda loetakse. Pärast faili lugemist kirjutatakse see ajutisse faili ja seejärel teisendatakse ajutine fail põhifailiks.

Ülaltoodud koodi käivitamisel saate järgmise väljundi

Väljund:

Laadime faili üles valides nupu Vali fail ja failinupp üleslaadimine laadib faili serverisse üles antud teele.

Näide: JSP-toimingute kasutamine

Selles näites laadime faili üles JSP-toimingute abil.

Võtame vormi, millel on nupp "Laadi üles" ja kui klõpsate üleslaadimisnuppu, siis fail üles laaditakse.

Üleslaadimine_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru faili üleslaadimine Fail:

Koodi selgitus:

Koodirida 11-12: siin võtame vormi, millel on toiming servletil guru_upload, mis läbib meetodi POST. Samuti siin kirjutame atribuudi st atribuut, mis määrab vormi andmete kodeerimise ja serverisse saatmise viisi ning seda kasutatakse ainult POST-meetodi korral. Siin määrame faili jaoks mõeldud mitmeosalised / vormiandmed (kuna andmed on suured).

Koodirida 13: Siin täpsustame elemendi guru_file tüübifailiga ja anname suuruseks 50.

Koodirida 15: See on saatmise tüübi nupp, millel on nimi "Laadi üles" ja mille kaudu kutsutakse toimingu servleti ja sellesse töödeldakse päringut ning fail loetakse ja kirjutatakse servleti.

Guru_upload.java

paketi demotest;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;avaliku klassi guru_upload laiendab HttpServlet {privaatne staatiline lõplik pikk serialVersionUID = 1L;avalik guru_upload () {Super();// TODO Automaatselt loodud konstruktori tüvi}kaitstud void doPost (HttpServletRequest päring, HttpServletResponse vastus) viskab ServletException, IOException {if (ServletFileUpload.isMultipartContent (taotlus)) {proovige {Loend  multiparts = new ServletFileUpload (uus DiskFileItemFactory ()). ParseRequest (taotlus);for (üksus FileItem: multiparts) {if (! item.isFormField ()) {Stringi nimi = uus fail (item.getName ()). GetName ();item.write (uus File ("c: / guru / upload" + File.separator + nimi));}}// Faili üleslaadimine õnnestusrequest.setAttribute ("gurumessage", "Fail on edukalt üles laaditud");} saak (erand ex) {request.setAttribute ("gurumessage", "Faili üleslaadimine ebaõnnestus" + ex tõttu);}} veel {request.setAttribute ("gurumessage", "Faili ei leitud");}request.getRequestDispatcher ("/ result.jsp"). edastamine (taotlus, vastus);}}

Koodi selgitus:

Koodirida 12-14: siin peame koodi konfiguratsiooni importima org.apache.commons teegi. Peame importima failide üleslaadimise klassi org.apache.commons teegist.

Koodirida 23: Siin on meetod doPost (), mida nimetatakse siis, kui JSP-s läbime meetodi POST ja see nõuab parameetritena objekte

Koodirida 26: Siin loome servletFileUpload klassi objekti failide üleslaadimise paketist org.apache.commons teegist, mis kontrollib, kas JSP-s on failiobjekte. Kui neid leidub, võetakse need faili objektid päringust.

Koodirida 27-32: kordame failide arvu, kontrollides, kui palju failiüksusi on mitmeosalistes objektides, mis on loendiobjekt (kui laadime üles rohkem kui ühte faili), ja salvestame selle kausta c: / guru / upload esitatud failinimi. Kirjutame faili failiobjekti kirjutusmeetodil mainitud kausta.

Koodirida 34: kui pole erandit, siis määrame päringus atribuudi väärtuseks "Faili üleslaadimine õnnestus".

Koodirida 35-36: erandi ilmnemisel määratakse teade "Faili üleslaadimine ebaõnnestus"

Koodirida 40: kui faili ei leitud, määratakse sõnumiks "Faili ei leitud"

Koodirida 42: päringu edastamine requestdispatcher objekti abil tulemusele.jsp koos päringu- ja vastusobjektidega.

Tulemus.jsp

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

Koodi selgitus:

Koodirida 10: Siit saame atribuudi päringuobjektilt väärtusega gurumessage stringi objektiks.

Koodirida 11: siin me printime selle teate.

Ülaltoodud koodi käivitamisel saame järgmise väljundi

Väljund:

Saame vormi, kus kataloogi faili valimiseks on väljad. Kui fail on valitud, peame klõpsama üleslaadimise nuppu.

Kui nupul üleslaadimine on klõpsatud, saame teate, et fail on üles laaditud.

Alloleval skeemil näeme, et fail oli üles laaditud kausta c: / guru / upload.

Faili allalaadimine:

Selles näites laadime faili kataloogist alla, klõpsates nuppu.

Allalaadimine_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru näite allalaadimine Guru faili allalaadimine  Laadige alla siit !!! 

Koodi selgitus:

Koodirida 10: Siin on antud link faili allalaadimiseks kaustast c: / guru / upload, kasutades servleti guru_download.

Guru_laadimine.java

paketi demotest;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;/ *** Servleti juurutusklassi guru_download* /avaliku klassi guru_download laiendab HttpServlet {privaatne staatiline lõplik pikk serialVersionUID = 1L;kaitstud void doGet (HttpServletRequest päring, HttpServletResponse vastus) viskab ServletException, IOException {response.setContentType ("tekst / html");PrintWriter välja = response.getWriter ();Stringi gurufail = "test.txt";Stringi gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "manus; failinimi = \" "+ gurufail + "\" ");FileInputStream fileInputStream = uus FileInputStream (gurupath+ gurufail);int i;while ((i = fileInputStream.read ())! = -1) {välja kirjutama (i);}fileInputStream.close ();välja.sulge ();}/ *** @see HttpServlet # doPost (HttpServletRequest päring, HttpServletResponse vastus)* /kaitstud void doPost (HttpServletRequest päring, HttpServletResponse vastus) viskab ServletException, IOException {// TODO Automaatselt loodud meetodi tüvi}}

Koodi selgitus:

Koodirida 3-5: Siin impordime paketist java.io FileInputStream, IO Exception ja PrintWriter.

Koodirida 15: määratleme serveri guru_download, mis laiendab HttpServleti.

Koodirida 18: Kuna oleme määranud href-i, mis lisatakse URL-i, siis töödeldakse GET-meetodit (servleti kutsutakse doGet), mis hõlmab ka päringu- ja vastusobjekte.

Koodirida 19-20: määrame vastuse objektiks sisutüübi ja saame ka kirjutajaobjekti vastusest.

Koodirida 21-22: muutuja määratlemine gurufile väärtuseks test.txt ja gurupath väärtuseks c: / guru / upload /

Koodirida 23-25: seadistame sisutüübi vastuse objekti abil ja kasutame meetodit setHeader, mis seab vastuseobjekti päise üleslaaditud failinimeks.

Koodirida 27–28: Loome FileInputStreami, kuhu lisame gurupath + gurufile.

Koodirida 31-33: Siin on võetud mõni aeg, mis töötab faili lugemiseni, seega oleme andnud tingimuse! = -1. Selles olekus kirjutame printwriter objekti välja.

Ülaltoodud koodi käivitamisel saate järgmise väljundi

Väljund:

Väljund:

Peame klõpsama allalaaditaval_1.jsp, me saame hüperlingi "Allalaadimine siia". Kui klõpsate sellel hüperlingifailil, laaditakse see süsteemi alla.

Kokkuvõte:

  • Oleme õppinud registreerumisvormi kohta, et registreeruda mis tahes rakenduses
  • Lisateave sisselogimis- ja väljalogimisvormide toimimise kohta.
  • Samuti sai teada faili üleslaadimise ja allalaadimise kohta JSP kaudu.