JSP failo įkėlimas & Failų atsisiuntimo programos pavyzdžiai

Turinys:

Anonim

Šiame pavyzdyje mes sužinosime apie failo įkėlimą ir atsisiuntimą per JSP.

Failo įvesties išvestis yra labai svarbios operacijos. Čia mes ketiname skaityti ir rašyti failą naudodami JSP.

JSP failo įkėlimas

  • Bet kokius failus galime įkelti naudodami JSP.
  • Tai gali būti tekstinis failas, dvejetainis failas, vaizdo failas ar bet kuris kitas dokumentas.
  • Čia failų įkėlimo atveju bus naudojamas tik POST metodas, o ne GET metodas.
  • „Enctype“ atributas turėtų būti nustatytas į daugiasluoksnius / formos duomenis.

Pavyzdys: Veiksmo naudojimas

Šiame pavyzdyje mes įkeliame failą naudodami IO objektą

Veiksmo_failas.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> „Guru“ failas  „Guru“ failo įkėlimas: Pasirinkite 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“ failo įkėlimas <%Failo byla;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / duomenys";String contentType = request.getContentType ();jei ((contentType.indexOf ("multipart / form-data")> = 0)) {„DiskFileItemFactory“ gamykla = nauja „DiskFileItemFactory“);factory.setSizeThreshold (maxMemSize);factory.setRepository (naujas failas ("c: \\ temp"));ServletFileUpload upload = naujas ServletFileUpload (gamyklinis);upload.setSizeMax (maxFileSize);bandyti{Sąrašas fileItems = upload.parseRequest (užklausa);Iteratorius i = fileItems.iterator ();out.println ("");out.println ("");o (i.hasNext ()){FileItem fi = (FileItem) i.next ();jei (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();loginis isInMemory = fi.isInMemory ();ilgas dydisInBytes = fi.getSize ();file = new File (filePath + "jūsųFailoVardas");fi.write (byla);out.println ("Įkeltas failo pavadinimas: + filePath + fileName + "
");}}out.println ("");out.println ("");} sugavimas (ex išimtis) {System.out.println (ex);}}Kitas{out.println ("");out.println ("");out.println ("

Nėra failo įkelta

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

Kodo paaiškinimas:

Veiksmo_failas.jsp

Kodo eilutė 12-18: Čia mes kuriame formą su failo lauku, kuris įkels failą į serverį ir veiksmas bus perduotas action_file_upload.jsp

Action_file_upload.jsp

Kodo eilutė 20: Čia pateikiame failo kelią į tam tikrą kelią

Kodo eilutė 23-38: Čia mes patikriname, ar turinio tipas yra daugdalis / formos duomenys. Tokiu atveju turinys yra failo tipo ir yra skaitomas. Perskaičius failą, jis įrašomas į laikiną failą, tada laikinas failas konvertuojamas į pagrindinį failą.

Vykdydami pirmiau nurodytą kodą, gausite šią išvestį

Išvestis:

Mes įkeliame failą naudodami mygtuką „Pasirinkti failą“ ir nusiųsdami failą mygtukas failą įkels į serverį nurodytu keliu.

Pavyzdys: JSP operacijų naudojimas

Šiame pavyzdyje mes ketiname įkelti failą naudodami JSP operacijas.

Mes priimsime formą, kurioje bus mygtukas „įkelti“, o spustelėjus mygtuką „Įkelti“, failas bus įkeltas.

Įkeliama_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru įkelia failą Failas:

Kodo paaiškinimas:

Kodo eilutė 11-12: Čia mes gauname formą, kuri veikia su servletu „guru_upload“, kuris pereis per metodą POST. Be to, čia mes įrašome atributą, ty nurodantį, kaip formos duomenys turėtų būti koduojami ir siunčiami į serverį, ir jis naudojamas tik su POST metodu. Čia mes nustatome kaip kelių dalių / formos duomenis, kurie skirti failui (nes duomenys bus dideli).

Kodo eilutė 13: Čia nurodome elementą „guru_file“ su failo tipu ir dydžiu nurodome 50.

15 kodo eilutė: Tai pateikimo tipo mygtukas su pavadinimu „Įkelti“, per kurį bus iškviečiamas veiksmo servletas ir užklausa bus apdorota į ją, o failas bus perskaitytas ir įrašytas į servletą.

„Guru_upload.java“

paketo demotest;importuoti java.io.File;importuoti java.io.IOException;importuoti java.util.List;importuoti javax.servlet.ServletException;importuoti javax.servlet.http.HttpServlet;importuoti javax.servlet.http.HttpServletRequest;importuoti javax.servlet.http.HttpServletResponse;importuoti org.apache.commons.fileupload.FileItem;importuoti org.apache.commons.fileupload.disk.DiskFileItemFactory;importuoti org.apache.commons.fileupload.servlet.ServletFileUpload;viešoji klasė „guru_upload“ pratęsia „HttpServlet“ {privatus statinis galutinis ilgas serialVersionUID = 1L;viešas guru_upload () {super ();// TODO automatiškai sukurtas konstruktoriaus šakas}apsaugotas negaliojantis „doPost“ („HttpServletRequest“ prašymas, „HttpServletResponse“ atsakymas) išmeta „ServletException“, „IOException“ {jei („ServletFileUpload.isMultipartContent“ (užklausa)) {bandyti {Išvardykite  multiparts = new ServletFileUpload (nauja DiskFileItemFactory ()). ParseRequest (užklausa);skirta „(FileItem item: multiparts)“ {jei (! item.isFormField ()) {Eilutės pavadinimas = naujas failas (item.getName ()). GetName ();item.write (naujas failas ("c: / guru / upload" + File.separator + vardas));}}// Failas sėkmingai įkeltasrequest.setAttribute ("gurumessage", "Failas sėkmingai įkeltas");} sugavimas (ex išimtis) {request.setAttribute ("gurumessage", "Failo įkėlimas nepavyko dėl" + ex);}}Kitas{request.setAttribute ("gurumessage", "Failas nerastas");}request.getRequestDispatcher ("/ result.jsp"). perduoti (užklausa, atsakymas);}}

Kodo paaiškinimas:

Kodo eilutė 12-14: Čia turėsime importuoti org.apache.commons biblioteką į kodo konfigūraciją. Turėsime importuoti failų įkėlimo klasę iš org.apache.commons bibliotekos.

Kodo eilutė 23: Čia mes turime metodą doPost (), kuris bus vadinamas, kai JSP perduodame POST metodą, ir jis paprašys ir atsakys objektus kaip savo parametrus

Kodo eilutė 26: Čia mes sukuriame „ServletFileUpload“ klasės objektą iš „fileUpload“ paketo iš org.apache.commons bibliotekos, kuris patikrins, ar JSP nėra failo objektų. Jei bus rasta, tas failo objektas bus paimtas iš užklausos.

Kodo eilutė 27-32: Pakartosime failų skaičių, patikrindami, kiek failo elementų yra kelių dalių objekte, kuris yra sąrašo objektas (jei įkeliame daugiau nei vieną failą) ir išsaugosime jį aplanke c: / guru / upload pateiktas failo vardas. Rašome failą naudodami „fileobject“ įrašymo metodą į aplanką, kuris buvo paminėtas.

34 kodo eilutė: jei nėra išimties, prašyme nustatome atributą kaip gurumessage, kurio vertė yra „Failas sėkmingai įkeltas“.

Kodo eilutė 35-36: Jei įvyksta išimtis, nustatykite pranešimą, kad „Failo įkėlimas nepavyko“

40 kodo eilutė: jei failas nerastas, nustatykite pranešimą kaip „Nerasta failo“

Kodo eilutė 42: užklausos persiuntimas naudojant requestdispatcher objektą result.jsp su užklausos ir atsakymo objektais.

Rezultatas.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> „Guru“ rezultatas <% String msg = (String) request.getAttribute ("pranešimas");out.println (msg);%>

Kodo paaiškinimas:

10 kodo eilutė: Čia gauname atributą iš užklausos objekto su reikšme gurumessage į eilutės objektą.

Kodo eilutė11: Čia mes spausdiname tą pranešimą.

Vykdydami pirmiau nurodytą kodą, gauname tokį išėjimą

Išvestis:

Gauname formą, kurioje yra laukai rinktis failą iš katalogo. Pasirinkę failą, turime spustelėti mygtuką „Įkelti“.

Spustelėjus įkėlimo mygtuką, gauname pranešimą, kad failas sėkmingai įkeltas.

Žemiau pateiktoje diagramoje matome, kad failas buvo įkeltas į aplanką c: / guru / upload.

Atsisiunčiamas failas:

Šiame pavyzdyje mes atsisiųsime failą iš katalogo spustelėdami mygtuką.

Atsisiųsti_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> „Guru“ pavyzdžio atsisiuntimas „Guru“ atsisiunčiamas failas  Atsisiųskite čia !!! 

Kodo paaiškinimas:

10 kodo eilutė: Čia pateikėme nuorodą failui atsisiųsti iš aplanko c: / guru / upload naudodami servletą guru_download.

„Guru_download.java“

paketo demotest;importuoti java.io.FileInputStream;importuoti java.io.IOException;importuoti java.io.PrintWriter;importuoti javax.servlet.ServletException;importuoti javax.servlet.http.HttpServlet;importuoti javax.servlet.http.HttpServletRequest;importuoti javax.servlet.http.HttpServletResponse;/ *** „Servlet“ diegimo klasė „guru_download“* /viešoji klasė „guru_download“ pratęsia „HttpServlet“ {privatus statinis galutinis ilgas serialVersionUID = 1L;apsaugotas negaliojantis „doGet“ („HttpServletRequest“ prašymas, „HttpServletResponse“ atsakymas) išmeta „ServletException“, „IOException“ {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Styginių gurufailas = "test.txt";Styginių gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Turinio išdėstymas", "priedas; failo pavadinimas = \" "+ gurufailas + "\" ");FileInputStream fileInputStream = nauja FileInputStream (gurupath+ gurufailas);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @ See HttpServlet # doPost („HttpServletRequest“ užklausa, „HttpServletResponse“ atsakymas)* /apsaugotas negaliojantis „doPost“ („HttpServletRequest“ prašymas, „HttpServletResponse“ atsakymas) išmeta „ServletException“, „IOException“ {// TODO Automatiškai sugeneruotas metodas}}

Kodo paaiškinimas:

Kodo eilutė 3-5: Čia mes importuojame „FileInputStream“, „IO Exception“ ir „PrintWriter“ iš paketo java.io.

15 kodo eilutė: Mes apibrėžiame „guru_download“ servletą, kuris pratęsia „HttpServlet“.

18 kodo eilutė: Kadangi mes apibrėžėme href, kuris bus įtrauktas į URL, GET metodas bus apdorotas („doGet“ bus iškviestas servlete), kuris taip pat apima užklausos ir atsakymo objektus.

Kodo eilutė 19-20: nustatome turinio tipą atsako objekte ir taip pat gauname rašytojo objektą iš atsakymo.

Kodo eilutė 21-22: Kintamojo apibrėžimas kaip gurufile kaip vertės test.txt ir gurupath kaip c: / guru / upload /

Kodo eilutė 23-25: Mes nustatome turinio tipą naudodami atsako objektą ir naudojame metodą setHeader, kuris nustato atsakymo objekto antraštę kaip failo pavadinimą, kuris buvo įkeltas.

Kodo eilutė 27–28: Kuriame „FileInputStream“, kuriame pridėsime „gurupath“ + „gurufile“.

Kodo eilutė 31-33: Čia mes užtrukome laiko ciklą, kuris veiks, kol bus nuskaitytas failas, todėl mes suteikėme sąlygą kaip! = -1. Esant tokiai būklei, mes rašome naudodami spausdintuvo objektą.

Vykdydami pirmiau nurodytą kodą gausite tokią išvestį

Išvestis:

Išvestis:

Turime spustelėti downloading_1.jsp ir gausime hipersaitą kaip „Atsisiųsti čia“. Kai spustelėsite šį hipersaito failą, jis bus atsisiųstas į sistemą.

Santrauka:

  • Sužinojome apie registracijos formą norint užsiregistruoti bet kurioje programoje
  • Sužinojo daugiau apie tai, kaip veikia prisijungimo ir atsijungimo formos.
  • Taip pat sužinojo apie failo įkėlimą ir atsisiuntimą per JSP.