JSP-bestand uploaden & Voorbeelden van programma's voor het downloaden van bestanden

Inhoudsopgave:

Anonim

In dit voorbeeld gaan we leren over het uploaden en downloaden van een bestand via JSP.

Bestandsinvoeruitvoer zijn zeer belangrijke bewerkingen. Hier gaan we een bestand lezen en schrijven met JSP.

JSP-bestand uploaden

  • We kunnen alle bestanden uploaden met JSP.
  • Het kan een tekstbestand, binair bestand, afbeeldingsbestand of een ander document zijn.
  • Hier in het geval van het uploaden van bestanden, wordt alleen de POST-methode gebruikt en niet de GET-methode.
  • Enctype-attribuut moet worden ingesteld op multipart / form-data.

Voorbeeld: actie gebruiken

In dit voorbeeld uploaden we een bestand met behulp van een IO-object

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-bestand  Guru-bestand uploaden: Selecteer bestand:

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-bestand uploaden ​Bestand bestand;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";String contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = nieuwe DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (nieuw bestand ("c: \\ temp"));ServletFileUpload upload = nieuwe ServletFileUpload (fabriek);upload.setSizeMax (maxFileSize);proberen{Lijst fileItems = upload.parseRequest (verzoek);Iterator i = fileItems.iterator ();out.println ("");out.println ("");while (i.hasNext ())​FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();boolean isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = nieuw bestand (filePath + "yourFileName");fi.write (bestand);out.println ("Geüploade bestandsnaam: + bestandspad + bestandsnaam + "
");​​out.println ("");out.println ("");} catch (uitzondering ex) {System.out.println (ex);​}anders{out.println ("");out.println ("");out.println ("

Geen bestand geüpload

");out.println ("");out.println ("");​​

Uitleg van de code:

Action_file.jsp

Coderegel 12-18: hier maken we een formulier met een bestandsveld, dat het bestand naar de server uploadt en de actie wordt doorgegeven aan action_file_upload.jsp

Action_file_upload.jsp

Coderegel 20: hier geven we het bestandspad naar een bepaald pad

Coderegel 23-38: Hier controleren we of het inhoudstype multipart / form-data is. Als dat het geval is, is de inhoud van het bestandstype en wordt deze gelezen. Nadat het bestand is gelezen, wordt het naar het tijdelijke bestand geschreven en vervolgens wordt het tijdelijke bestand geconverteerd naar het hoofdbestand.

Als je de bovenstaande code uitvoert, krijg je de volgende output

Uitgang:

We uploaden het bestand met de optie Bestand kiezen en de knop Bestand uploaden zal het bestand naar de server uploaden naar het opgegeven pad.

Voorbeeld: JSP-bewerkingen gebruiken

In dit voorbeeld gaan we een bestand uploaden met JSP-bewerkingen.

We nemen een formulier met de "upload" -knop en wanneer u op de upload-knop klikt, wordt het bestand geüpload.

Uploaden_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru uploadt bestand Bestand:

Uitleg van de code:

Coderegel 11-12: Hier nemen we een formulier aan dat actie heeft op servlet guru_upload die een methode POST zal passeren. Hier typen we ook een attribuut in dat specificeert hoe formuliergegevens moeten worden gecodeerd en naar de server moeten worden verzonden en het wordt alleen gebruikt met de POST-methode. Hier stellen we in als multipart / form-data die voor het bestand zijn (aangezien de data groot zullen zijn).

Coderegel 13: hier specificeren we het element guru_file met het type bestand en geven we de grootte op als 50.

Coderegel 15: Dit is een verzendtypeknop met de naam "Upload" erop, waardoor de actieservlet wordt aangeroepen en het verzoek daarin wordt verwerkt en het bestand wordt gelezen en naar de servlet wordt geschreven.

Guru_upload.java

pakket demotest;importeer java.io.File;importeer java.io.IOException;importeer java.util.List;importeer javax.servlet.ServletException;importeer javax.servlet.http.HttpServlet;importeer javax.servlet.http.HttpServletRequest;importeer javax.servlet.http.HttpServletResponse;importeer org.apache.commons.fileupload.FileItem;importeer org.apache.commons.fileupload.disk.DiskFileItemFactory;importeer org.apache.commons.fileupload.servlet.ServletFileUpload;openbare klasse guru_upload breidt HttpServlet {uitprivé statische laatste lange serialVersionUID = 1L;openbare guru_upload () {super();// TODO Automatisch gegenereerde constructorstub​beschermde ongeldige doPost (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit ServletException, IOException {if (ServletFileUpload.isMultipartContent (verzoek)) {proberen {List  multiparts = nieuwe ServletFileUpload (nieuwe DiskFileItemFactory ()). ParseRequest (verzoek);voor (FileItem item: multiparts) {if (! item.isFormField ()) {Stringnaam = nieuw bestand (item.getName ()). GetName ();item.write (nieuw bestand ("c: / guru / upload" + File.separator + naam));​​//Bestand succesvol geüploadrequest.setAttribute ("gurumessage", "Bestand succesvol geüpload");} catch (uitzondering ex) {request.setAttribute ("gurumessage", "Bestand uploaden mislukt vanwege" + ex);​}anders{request.setAttribute ("gurumessage", "Geen bestand gevonden");​request.getRequestDispatcher ("/ result.jsp"). doorsturen (verzoek, antwoord);​​

Uitleg van de code:

Coderegel 12-14: Hier zullen we de org.apache.commons-bibliotheek moeten importeren in de configuratie van de code. We zullen de fileupload-klasse moeten importeren uit de org.apache.commons-bibliotheek.

Coderegel 23: hier hebben we de methode doPost (), die zal worden aangeroepen als we de POST-methode in JSP doorgeven en het zal objecten opvragen en beantwoorden als zijn parameters

Coderegel 26: Hier maken we een object van de ServletFileUpload-klasse vanuit het fileUpload-pakket uit de org.apache.commons-bibliotheek die zal controleren of er bestandsobjecten in JSP zijn. Als er iets wordt gevonden, wordt dat bestandsobject uit het verzoek gehaald.

Coderegel 27-32: We zullen het aantal bestanden herhalen door te controleren hoeveel bestandsitems aanwezig zijn in een multipart-object dat een lijstobject is (als we meer dan één bestand uploaden) en het opslaan in de map c: / guru / upload met de bestandsnaam die is opgegeven. We schrijven het bestand met de schrijfmethode van het bestandsobject naar de genoemde map.

Coderegel 34: Als er geen uitzondering is, stellen we het kenmerk in het verzoek in als gurumessage met de waarde "Bestand geüpload met succes".

Coderegel 35-36: Als er een uitzondering optreedt, wordt het bericht ingesteld dat "Bestand uploaden is mislukt"

Coderegel 40: Als het bestand niet wordt gevonden, stelt u het bericht in als "Geen bestand gevonden"

Coderegel 42: verzoek doorsturen met behulp van requestdispatcher-object naar result.jsp met verzoek- en antwoordobjecten.

Resultaat. Jsp

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

Uitleg van de code:

Coderegel 10: hier krijgen we het attribuut van het request-object met de waarde gurumessage in een string-object.

Code Line11: hier zijn we dat bericht aan het afdrukken.

Wanneer we de bovenstaande code uitvoeren, krijgen we de volgende uitvoer

Uitgang:

We krijgen een formulier waarin er velden zijn om een ​​bestand uit de directory te kiezen. Zodra het bestand is geselecteerd, moeten we op de uploadknop klikken.

Zodra de uploadknop is aangeklikt, krijgen we het bericht dat het bestand is geüpload.

In het onderstaande diagram kunnen we zien dat het bestand is geüpload in de map c: / guru / upload.

Bestand downloaden:

In dit voorbeeld gaan we een bestand downloaden uit een directory door op de knop te klikken.

Aan het downloaden_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-voorbeeld downloaden Guru Download bestand  Download hier !!! 

Uitleg van de code:

Coderegel 10: Hier hebben we een link gegeven om een ​​bestand te downloaden uit map c: / guru / upload met behulp van servlet guru_download.

Guru_download.java

pakket demotest;importeer java.io.FileInputStream;importeer java.io.IOException;importeer java.io.PrintWriter;importeer javax.servlet.ServletException;importeer javax.servlet.http.HttpServlet;importeer javax.servlet.http.HttpServletRequest;importeer javax.servlet.http.HttpServletResponse;​* Servlet-implementatieklasse guru_download​openbare klasse guru_download breidt HttpServlet {uitprivé statische laatste lange serialVersionUID = 1L;protected void doGet (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit ServletException, IOException {response.setContentType ("text / html");PrintWriter uit = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = nieuwe FileInputStream (gurupath+ gurufile);int ik;while ((i = fileInputStream.read ())! = -1) {out.write (i);​fileInputStream.close ();out.close ();​​* @zie HttpServlet # doPost (HttpServletRequest-verzoek, HttpServletResponse-antwoord)​beschermde ongeldige doPost (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit ServletException, IOException {// TODO Automatisch gegenereerde methodestub​​

Uitleg van de code:

Coderegel 3-5: hier importeren we FileInputStream, IO Exception en PrintWriter uit het java.io-pakket.

Coderegel 15: We definiëren de servlet guru_download die HttpServlet uitbreidt.

Coderegel 18: zoals we een href hebben gedefinieerd, die wordt ingesloten in de URL, zodat de GET-methode wordt verwerkt (doGet wordt in servlet aangeroepen) die ook verzoek- en antwoordobjecten omvat.

Coderegel 19-20: we stellen het inhoudstype in het responsobject in en halen ook het schrijverobject uit het antwoord.

Coderegel 21-22: een variabele definiëren als gurufile als waarde test.txt en gurupath als c: / guru / upload /

Coderegel 23-25: We stellen het inhoudstype in met behulp van het responsobject en we gebruiken de setHeader-methode die de header in het responsobject plaatst als de bestandsnaam die is geüpload.

Coderegel 27-28: We maken FileInputStream waarin we gurupath + gurufile zullen toevoegen.

Coderegel 31-33: Hier hebben we een while-lus gemaakt die zal lopen totdat het bestand is gelezen, daarom hebben we de voorwaarde gegeven als! = -1. In deze toestand schrijven we met behulp van printwriter-object uit.

Als u de bovenstaande code uitvoert, krijgt u de volgende uitvoer

Uitgang:

Uitgang:

We moeten op downloading_1.jsp klikken en we krijgen een hyperlink als "Download Here". Wanneer u op dit hyperlinkbestand klikt, wordt het naar het systeem gedownload.

Overzicht:

  • We hebben geleerd over het registratieformulier om u in te schrijven voor elke toepassing
  • Meer informatie over hoe de inlog- en uitlogformulieren werken.
  • Ook geleerd over het uploaden en downloaden van een bestand via JSP.