Nahrávání souborů JSP & Příklady programů pro stahování souborů

Obsah:

Anonim

V tomto příkladu se budeme učit o nahrávání a stahování souboru prostřednictvím JSP.

Výstup vstupu do souboru jsou velmi důležité operace. Zde budeme číst a zapisovat soubor pomocí JSP.

Nahrání souboru JSP

  • Můžeme nahrát jakékoli soubory pomocí JSP.
  • Může to být textový soubor, binární soubor, obrazový soubor nebo jakýkoli jiný dokument.
  • Zde v případě nahrání souboru bude použita pouze metoda POST, nikoli metoda GET.
  • Atribut Enctype by měl být nastaven na multipart / form-data.

Příklad: Použití akce

V tomto příkladu nahráváme soubor pomocí objektu IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru soubor  Nahrávání souborů Guru: Vyberte soubor:

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. *"%> Nahrávání souborů Guru <%Soubor souboru;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;Řetězec filePath = "E: / guru99 / data";Řetězec contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = nový DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nový soubor ("c: \\ temp"));ServletFileUpload upload = nový ServletFileUpload (továrna);upload.setSizeMax (maxFileSize);Snaž se{Seznam fileItems = upload.parseRequest (požadavek);Iterátor i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {Řetězec fieldName = fi.getFieldName ();Řetězec fileName = fi.getName ();boolean isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (soubor);out.println ("Nahraný název souboru: + filePath + fileName + "
");}}out.println ("");out.println ("");} chytit (výjimka výjimka) {System.out.println (ex);}}jiný{out.println ("");out.println ("");out.println ("

Nebyl nahrán žádný soubor

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

Vysvětlení kódu:

Action_file.jsp

Řádek kódu 12-18: Zde vytváříme formulář se souborovým polem, které nahraje soubor na server a akce bude předána do action_file_upload.jsp

Action_file_upload.jsp

Řádek kódu 20: Zde dáváme cestu k souboru konkrétní cestě

Řádek kódu 23-38: Zde kontrolujeme, zda je typ obsahu vícedílný / formulářová data. V takovém případě je obsah typu souboru a je načten. Po přečtení souboru se zapíše do dočasného souboru a poté se dočasný soubor převede na hlavní soubor.

Když spustíte výše uvedený kód, získáte následující výstup

Výstup:

Nahráváme soubor pomocí možnosti zvolit tlačítko souboru a tlačítko nahrát soubor nahraje soubor na server na zadanou cestu.

Příklad: Použití operací JSP

V tomto příkladu nahrajeme soubor pomocí operací JSP.

Vezmeme formulář, který bude mít tlačítko „upload“ a po kliknutí na tlačítko upload se soubor nahraje.

Nahrávání_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Nahrávání souboru Guru Soubor:

Vysvětlení kódu:

Řádek kódu 11-12: Zde bereme formulář, který má akci na servletu guru_upload, který projde metodou POST. Také zde uvádíme enctype tj. Atribut, který určuje, jak mají být data formuláře kódována a odeslána na server, a používá se pouze s metodou POST. Zde nastavujeme jako multipart / form-data, která je pro soubor (protože data budou velká).

Řádek kódu 13: Zde zadáváme prvek guru_file s typovým souborem a udáváme velikost jako 50.

Řádek kódu 15: Toto je tlačítko typu odeslání s názvem „Nahrát“, prostřednictvím kterého bude vyvolán akční servlet a do něj bude zpracován požadavek a soubor bude načten a zapsán do servletu.

Guru_upload.java

balíček 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;importovat org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload rozšiřuje HttpServlet {soukromá statická finální dlouhá serialVersionUID = 1L;public guru_upload () {super ();// TODO Automaticky generovaný útržek konstruktoru}protected void doPost (požadavek HttpServletRequest, odpověď HttpServletResponse) vyvolá ServletException, IOException {if (ServletFileUpload.isMultipartContent (požadavek)) {Snaž se {Seznam  multiparts = nový ServletFileUpload (nový DiskFileItemFactory ()). ParseRequest (požadavek);for (FileItem item: multiparts) {if (! item.isFormField ()) {Název řetězce = nový soubor (item.getName ()). GetName ();item.write (nový soubor ("c: / guru / upload" + File.separator + jméno));}}//Soubor byl úspěšně nahránrequest.setAttribute ("gurumessage", "Soubor byl úspěšně odeslán");} chytit (výjimka výjimka) {request.setAttribute ("gurumessage", "Nahrání souboru se nezdařilo z důvodu" + ex);}}jiný{request.setAttribute ("gurumessage", "nebyl nalezen žádný soubor");}request.getRequestDispatcher ("/ result.jsp"). forward (požadavek, odpověď);}}

Vysvětlení kódu:

Řádek kódu 12-14: Zde budeme muset importovat knihovnu org.apache.commons do konfigurace kódu. Budeme muset importovat třídu fileupload z knihovny org.apache.commons.

Řádek kódu 23: Zde máme metodu doPost (), která bude volána, když předáváme metodu POST v JSP a bude požadovat a reagovat na objekty jako její parametry

Řádek kódu 26: Zde vytváříme objekt třídy ServletFileUpload z balíčku fileUpload z knihovny org.apache.commons, který ověří, zda v JSP existují nějaké souborové objekty. Pokud se nějaký najde, bude tento souborový objekt převzat z požadavku.

Řádek kódu 27-32: Počet souborů budeme iterovat tak, že zkontrolujeme, kolik položek souboru je v objektu vícedílných, což je objekt seznamu (pokud nahrajeme více než jeden soubor) a uložíme jej do složky c: / guru / upload s název souboru, který byl poskytnut. Soubor zapisujeme metodou write objektu fileobject do výše zmíněné složky.

Řádek kódu 34: Pokud neexistuje žádná výjimka, nastavujeme atribut v požadavku jako gurumessage s hodnotou „Soubor byl úspěšně nahrán“.

Řádek kódu 35-36: Pokud dojde k výjimce, pak se zobrazí zpráva, že „Nahrání souboru se nezdařilo“

Řádek kódu 40: Pokud soubor nebyl nalezen, nastavení zprávy jako „Nebyl nalezen soubor“

Řádek kódu 42: Předání požadavku pomocí objektu requestdispatcher na result.jsp s objekty požadavku a odpovědi.

Result.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Výsledek guru <% String msg = (String) request.getAttribute ("message");out.println (zpráva);%>

Vysvětlení kódu:

Řádek kódu 10: Zde dostáváme atribut z objektu požadavku s hodnotou gurumessage do objektu řetězce.

Code Line11: Zde tuto zprávu tiskneme.

Když provedeme výše uvedený kód, získáme následující výstup

Výstup:

Dostaneme formulář, ve kterém jsou pole pro výběr souboru z adresáře. Jakmile je soubor vybrán, musíme kliknout na tlačítko nahrávání.

Jakmile kliknete na tlačítko nahrávání, zobrazí se zpráva, že soubor byl úspěšně nahrán.

V níže uvedeném diagramu vidíme, že soubor byl nahrán do složky c: / guru / upload.

Stahování souboru:

V tomto příkladu stáhneme soubor z adresáře kliknutím na tlačítko.

Stahování_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Stažení příkladu guru Guru Stahování souborů  Stáhnout zde !!! 

Vysvětlení kódu:

Řádek kódu 10: Zde jsme uvedli odkaz na stažení souboru ze složky c: / guru / upload pomocí servletu guru_download.

Guru_download.java

balíček 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;/ *** Třída implementace servletu guru_download* /public class guru_download rozšiřuje HttpServlet {soukromá statická finální dlouhá serialVersionUID = 1L;protected void doGet (požadavek HttpServletRequest, odpověď HttpServletResponse) vyvolá ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Řetězec gurufile = "test.txt";Řetězec gurupath = "c: / guru / upload /";response.setContentType ("APLIKACE / OCTET-STREAM");response.setHeader ("Content-Disposition", "příloha; název souboru = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nový FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {vypsat (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (požadavek HttpServletRequest, odpověď HttpServletResponse)* /protected void doPost (požadavek HttpServletRequest, odpověď HttpServletResponse) vyvolá ServletException, IOException {// TODO Automaticky generovaný útržek metody}}

Vysvětlení kódu:

Řádek kódu 3-5: Zde importujeme FileInputStream, IO Exception a PrintWriter z balíčku java.io.

Řádek kódu 15: Definujeme servlet guru_download, který rozšiřuje HttpServlet.

Řádek kódu 18: Jak jsme definovali href, který bude uzavřen v URL, takže bude zpracována metoda GET (doGet bude volána v servletu), který také uzavře objekty požadavku a odpovědi.

Řádek kódu 19-20: Nastavujeme obsah Type v objektu odpovědi a také získáváme objekt spisovatele z odpovědi.

Řádek kódu 21-22: Definování proměnné jako gurufile jako hodnoty test.txt a gurupath jako c: / guru / upload /

Řádek kódu 23-25: Nastavujeme typ obsahu pomocí objektu odpovědi a používáme metodu setHeader, která nastavuje záhlaví do objektu odpovědi jako název souboru, který byl nahrán.

Řádek kódu 27-28: Vytváříme FileInputStream, do kterého přidáme gurupath + gurufile.

Řádek kódu 31-33: Zde jsme vzali while smyčku, která poběží, dokud se soubor nenačte, proto jsme dali podmínku jako! = -1. V tomto stavu zapisujeme pomocí objektu printwriter.

Po provedení výše uvedeného kódu získáte následující výstup

Výstup:

Výstup:

Musíme kliknout na stahování_1.jsp, dostaneme hypertextový odkaz jako „Stáhnout zde“. Když kliknete na tento soubor hypertextového odkazu, stáhne se do systému.

Souhrn:

  • Dozvěděli jsme se o registračním formuláři pro registraci do jakékoli aplikace
  • Další informace o tom, jak fungují přihlašovací a odhlašovací formuláře.
  • Dozvěděl jsem se také o nahrávání a stahování souboru prostřednictvím JSP.