Prijenos JSP datoteke & Primjeri programa za preuzimanje datoteka

Sadržaj:

Anonim

U ovom primjeru naučit ćemo o prijenosu i preuzimanju datoteke putem JSP-a.

Izlaz unosa datoteke su vrlo važne operacije. Ovdje ćemo čitati i pisati datoteku pomoću JSP-a.

Prijenos JSP datoteke

  • Sve datoteke možemo poslati pomoću JSP-a.
  • To može biti tekstualna datoteka, binarna datoteka, slikovna datoteka ili bilo koji drugi dokument.
  • Ovdje će se u slučaju prijenosa datoteka koristiti samo metoda POST, a ne metoda GET.
  • Atribut Enctype treba postaviti na multipart / form-data.

Primjer: Korištenje akcije

U ovom primjeru prenosimo datoteku pomoću IO objekta

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru datoteka  Guru prijenos datoteke: Odaberite datoteku:

Action_file_upload.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ import 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 prijenos datoteka <%Datoteka datoteke;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Niz sadržajaType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory tvornica = nova DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nova datoteka ("c: \\ temp"));ServletFileUpload upload = novi ServletFileUpload (tvornički);upload.setSizeMax (maxFileSize);probati{Popis fileItems = upload.parseRequest (zahtjev);Iterator i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Polje niza = fi.getFieldName ();Niz datotekeName = fi.getName ();logička vrijednost jeInMemory = fi.isInMemory ();duga veličinaInBytes = fi.getSize ();datoteka = nova datoteka (filePath + "yourFileName");fi.write (datoteka);out.println ("Učitani naziv datoteke: + filePath + fileName + "
");}}out.println ("");out.println ("");} catch (Iznimka ex) {System.out.println (ex);}}drugo{out.println ("");out.println ("");out.println ("

Nije prenesena datoteka

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

Objašnjenje koda:

Action_file.jsp

Redak koda 12-18: Ovdje stvaramo obrazac s poljem datoteke, koji će datoteku prenijeti na poslužitelj, a akcija će se proslijediti na action_file_upload.jsp

Action_file_upload.jsp

Redak koda 20: Ovdje dajemo put do datoteke do određene staze

Redak koda 23-38: Ovdje provjeravamo je li vrsta sadržaja višedijelna / obrasci-podaci. Ako je to slučaj, tada je sadržaj datoteke i on se čita. Nakon čitanja datoteke, ona se zapisuje u privremenu datoteku, a zatim se privremena datoteka pretvara u glavnu datoteku.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz

Izlaz:

Datoteku prenosimo pomoću opcije gumba za odabir datoteke, a tipka za prijenos datoteke prenijet će datoteku na poslužitelj na predviđeni put.

Primjer: Korištenje JSP operacija

U ovom ćemo primjeru prenijeti datoteku pomoću JSP operacija.

Uzet ćemo obrazac koji će imati gumb "upload", a kada kliknete gumb za prijenos, datoteka će biti prenesena.

Uploading_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru učitavanje datoteke Datoteka:

Objašnjenje koda:

Redak koda 11-12: Ovdje preuzimamo obrazac koji djeluje na servlet guru_upload koji će proći kroz metodu POST. Također, ovdje enctype tj. Atribut koji određuje kako podaci obrasca trebaju biti kodirani i poslani na poslužitelj, a koristi se samo s POST metodom. Ovdje postavljamo podatke iz više dijelova / obrazaca koji su za datoteku (jer će podaci biti veliki).

Redak koda 13: Ovdje navodimo guru_file element s datotekom tipa i dajemo veličinu kao 50.

Redak koda 15: Ovo je gumb vrste slanja s imenom "Učitaj" putem kojeg će se pozvati servlet akcije, a zahtjev će se u njega obraditi, a datoteka će se čitati i zapisati u servlet.

Guru_upload.java

demotest paketa;import java.io.File;import java.io.IOException;import java.util.List;uvoz javax.servlet.ServletException;uvoz javax.servlet.http.HttpServlet;uvoz javax.servlet.http.HttpServletRequest;uvoz javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;javna klasa guru_upload proširuje HttpServlet {privatni statički konačni long serialVersionUID = 1L;javni guru_upload () {super();// TODO Automatski generirani klizač konstruktora}zaštićena void doPost (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {if (ServletFileUpload.isMultipartContent (zahtjev)) {probaj {Popis  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (zahtjev);za (FileItem stavka: više dijelova) {if (! item.isFormField ()) {Naziv niza = nova datoteka (item.getName ()). GetName ();item.write (nova datoteka ("c: / guru / upload" + File.separator + ime));}}// Datoteka je uspješno prenesenarequest.setAttribute ("gurumessage", "Uspješno prenesena datoteka");} catch (Iznimka ex) {request.setAttribute ("gurumessage", "Prijenos datoteke nije uspio zbog" + ex);}}drugo{request.setAttribute ("gurumessage", "Nije pronađena datoteka");}request.getRequestDispatcher ("/ result.jsp"). forward (zahtjev, odgovor);}}

Objašnjenje koda:

Redak koda 12-14: Ovdje ćemo morati uvesti biblioteku org.apache.commons u konfiguraciju koda. Morat ćemo uvesti klasu za preuzimanje datoteka iz biblioteke org.apache.commons.

Redak koda 23: Ovdje imamo metodu doPost (), koja će se pozivati ​​dok prenosimo POST metodu u JSP, a kao svoje parametre tražit će objekte i odgovore

Redak koda 26: Ovdje stvaramo objekt klase ServletFileUpload iz paketa fileUpload iz biblioteke org.apache.commons koji će provjeriti postoje li objekti datoteka u JSP-u. Ako se pronađe, objekt datoteke bit će preuzet iz zahtjeva.

Redak koda 27-32: Ponovit ćemo broj datoteka provjeravajući koliko je stavki datoteke prisutno u objektu s više dijelova koji je objekt popisa (ako prenesemo više datoteka) i spremit ćemo ga u mapu c: / guru / upload s naziv datoteke koji je naveden. Datoteku zapisujemo metodom pisanja predmetnog objekta u spomenutu mapu.

Redak 34: Ako nema iznimke, tada postavljamo atribut u zahtjevu kao gurumessage s vrijednošću "Datoteka je uspješno prenesena".

Redak koda 35-36: Ako se dogodi iznimka, tada se postavlja poruka da "Prijenos datoteke nije uspio"

Kodni redak 40: Ako datoteka nije pronađena, postavite poruku kao "Nije pronađena datoteka"

Redak koda 42: Prosljeđivanje zahtjeva pomoću objekta requestdispatcher na result.jsp s objektima zahtjeva i odgovora.

Rezultat.jsp

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

Objašnjenje koda:

Redak koda 10: Ovdje dobivamo atribut iz objekta zahtjeva s vrijednošću gurumessage u objekt niza.

Šifra 11: Ovdje ispisujemo tu poruku.

Kada izvršimo gornji kod, dobit ćemo sljedeći izlaz

Izlaz:

Dobivamo obrazac u kojem postoje polja za odabir datoteke iz direktorija. Nakon odabira datoteke, moramo kliknuti gumb za prijenos.

Jednom kada kliknemo gumb za prijenos, dobit ćemo poruku da je datoteka uspješno prenesena.

Na donjem dijagramu možemo vidjeti da je datoteka prenesena u mapu c: / guru / upload.

Preuzimanje datoteke:

U ovom ćemo primjeru datoteku iz direktorija preuzeti klikom na gumb.

Preuzimanje_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Preuzimanje primjera gurua Guru Preuzimanje datoteke  Preuzmite ovdje !!! 

Objašnjenje koda:

Kodni redak 10: Ovdje smo dali vezu za preuzimanje datoteke iz mape c: / guru / upload pomoću servleta guru_download.

Guru_download.java

demotest paketa;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;uvoz javax.servlet.ServletException;uvoz javax.servlet.http.HttpServlet;uvoz javax.servlet.http.HttpServletRequest;uvoz javax.servlet.http.HttpServletResponse;/ *** Klasa implementacije servleta guru_download* /javna klasa guru_download proširuje HttpServlet {privatni statički konačni long serialVersionUID = 1L;zaštićeni void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";Niz gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = novi FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (zahtjev za HttpServletRequest, odgovor HttpServletResponse)* /zaštićena void doPost (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {// TODO Automatski generirani kvar metode}}

Objašnjenje koda:

Redak koda 3-5: Ovdje uvozimo FileInputStream, IO Exception i PrintWriter iz paketa java.io.

Redak koda 15: Definiramo guru_download servlet koji proširuje HttpServlet.

Redak koda 18: Kao što smo definirali href, koji će biti zatvoren u URL, tako će se GET metoda obraditi (doGet će se zvati u servletu) koji također obuhvaća objekte zahtjeva i odgovora.

Redak koda 19-20: Postavljamo sadržaj Upišite objekt odgovora i također dobivamo objekt pisanja iz odgovora.

Linija koda 21-22: Definiranje varijable kao gurufile kao vrijednosti test.txt i gurupath kao c: / guru / upload /

Redak koda 23-25: Postavljamo vrstu sadržaja pomoću objekta odgovora i koristimo metodu setHeader koja postavlja zaglavlje u objekt odgovora kao naziv datoteke koja je prenesena.

Redak koda 27-28: Stvaramo FileInputStream u koji ćemo dodati gurupath + gurufile.

Linija koda 31-33: Ovdje smo uzeli neko vrijeme petlje koja će se izvoditi dok se datoteka ne pročita, stoga smo dali uvjet kao! = -1. U ovom stanju pišemo pomoću printwriter objekta out.

Kada izvršite gornji kod dobit ćete sljedeći izlaz

Izlaz:

Izlaz:

Moramo kliknuti na downloading_1.jsp, dobit ćemo hipervezu kao "Preuzmi ovdje". Kada kliknete na ovu hipervezu, ona će se preuzeti u sustav.

Sažetak:

  • Saznali smo o prijavnom obrascu za registraciju u bilo koju prijavu
  • Saznali ste više o tome kako funkcioniraju obrasci za prijavu i odjavu.
  • Također naučio o prijenosu i preuzimanju datoteke putem JSP-a.