JSP File Upload & Eksempler på nedlasting av filer

Innholdsfortegnelse:

Anonim

I dette eksemplet skal vi lære om opplasting og nedlasting av en fil via JSP.

File Input output er veldig viktige operasjoner. Her skal vi lese og skrive en fil ved hjelp av JSP.

JSP-filopplasting

  • Vi kan laste opp alle filer ved hjelp av JSP.
  • Det kan være en tekstfil, binærfil, bildefil eller et hvilket som helst annet dokument.
  • I tilfelle filopplasting vil bare POST-metoden brukes og ikke GET-metoden.
  • Enctype-attributt skal settes til multipart / form-data.

Eksempel: Bruk av handling

I dette eksemplet laster vi opp en fil ved hjelp av IO-objekt

Action_file.jsp

<% @ sidespråk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru File  Guru-filopplasting: Velg fil:

Action_file_upload.jsp

<% @ sidespråk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. *, java.util. *, javax.servlet. *"%><% @ side 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 File Upload <%Filfil;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / data";Streng contentType = request.getContentType ();hvis ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory fabrikk = ny DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (ny fil ("c: \\ temp"));ServletFileUpload upload = new ServletFileUpload (fabrikk);upload.setSizeMax (maxFileSize);prøve{Liste fileItems = upload.parseRequest (forespørsel);Iterator i = fileItems.iterator ();out.println ("");out.println ("");mens (i.hasNext ()){FileItem fi = (FileItem) i.next ();hvis (! fi.isFormField ()) {Streng feltnavn = fi.getFieldName ();Strengfilnavn = fi.getName ();boolsk isInMemory = fi.isInMemory ();lang størrelseInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (fil);out.println ("Lastet opp filnavn: + filePath + filnavn + "
");}}out.println ("");out.println ("");} fangst (unntak eks) {System.out.println (ex);}}ellers{out.println ("");out.println ("");out.println ("

Ingen fil lastet opp

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

Forklaring av koden:

Action_file.jsp

Kodelinje 12-18: Her lager vi skjema med filfelt, som vil laste opp filen til serveren og handlingen vil bli sendt til action_file_upload.jsp

Action_file_upload.jsp

Kodelinje 20: Her gir vi filbanen til en bestemt bane

Kodelinje 23-38: Her sjekker vi om innholdstypen er flerdelt / skjemadata. Hvis det er tilfelle, er innholdet av filtype, og det blir lest. Etter at filen er lest, blir den skrevet inn i den midlertidige filen, og deretter blir den midlertidige filen konvertert til hovedfilen.

Når du utfører koden ovenfor, får du følgende utdata

Produksjon:

Vi laster opp fil ved å velge alternativet Filknapp, og knappen Last opp fil vil laste opp filen til serveren til banen som er gitt.

Eksempel: Bruke JSP-operasjoner

I dette eksemplet skal vi laste opp en fil ved hjelp av JSP-operasjoner.

Vi tar et skjema som vil ha "last opp" -knappen, og når du klikker på opplastingsknappen, blir filen lastet opp.

Uploading_1.jsp

<% @ sidespråk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru laster opp fil Fil:

Forklaring av koden:

Kodelinje 11-12: Her tar vi et skjema som har handling på servlet guru_upload som vil passere gjennom en metode POST. Også her skriver vi inn dvs. attributt som spesifiserer hvordan skjemadata skal kodes og sendes til serveren, og de brukes bare med POST-metoden. Her setter vi som flerdelt / skjemadata som er for filen (da data vil være store).

Kodelinje 13: Her spesifiserer vi guru_file-element med typefil og gir størrelse som 50.

Kodelinje 15: Dette er en innleveringstypeknapp med navnet "Last opp" på den gjennom hvilken handlingsservlet vil bli kalt og forespørselen vil bli behandlet til det, og filen vil bli lest og skrevet i servleten.

Guru_upload.java

demotest pakke;importere java.io.File;importere java.io.IOException;importere java.util.List;importere javax.servlet.ServletException;importere javax.servlet.http.HttpServlet;importere javax.servlet.http.HttpServletRequest;importere javax.servlet.http.HttpServletResponse;importer org.apache.commons.fileupload.FileItem;importer org.apache.commons.fileupload.disk.DiskFileItemFactory;importer org.apache.commons.fileupload.servlet.ServletFileUpload;offentlig klasse guru_upload utvider HttpServlet {privat statisk endelig lang serialVersionUID = 1L;offentlig guru_upload () {super();// TODO Auto-generert konstruktørstubbe}beskyttet ugyldig doPost (HttpServletRequest-forespørsel, HttpServletResponse-svar) kaster ServletException, IOException {hvis (ServletFileUpload.isMultipartContent (forespørsel)) {prøv {Liste  multiparts = ny ServletFileUpload (ny DiskFileItemFactory ()). ParseRequest (forespørsel);for (FileItem-element: multiparts) {hvis (! item.isFormField ()) {Strengnavn = ny fil (item.getName ()). GetName ();item.write (ny fil ("c: / guru / upload" + File.separator + name));}}// Filen ble lastet opprequest.setAttribute ("gurumessage", "Fil lastet opp vellykket");} fangst (unntak eks) {request.setAttribute ("gurumessage", "Filopplasting mislyktes på grunn av" + ex);}}ellers{request.setAttribute ("gurumessage", "Ingen fil funnet");}request.getRequestDispatcher ("/ result.jsp"). videresend (forespørsel, svar);}}

Forklaring av koden:

Kodelinje 12-14: Her må vi importere org.apache.commons-biblioteket til konfigurasjonen av koden. Vi må importere filopplastingsklasse fra biblioteket org.apache.commons.

Kodelinje 23: Her har vi doPost () -metoden, som vil bli kalt når vi sender POST-metoden i JSP, og den vil be om og svare på objekter som parametere

Kodelinje 26: Her lager vi et objekt av ServletFileUpload-klasse fra fileUpload-pakke fra org.apache.commons-biblioteket som vil sjekke om det er noen filobjekter i JSP. Hvis noen blir funnet, blir disse filobjektene hentet fra forespørsel.

Kodelinje 27-32: Vi vil gjenta antallet filer ved å sjekke hvor mange filelementer som er tilstede i flerdelt objekt som er et listeobjekt (hvis vi laster opp mer enn en fil) og lagre det i c: / guru / opplastingsmappe med filnavnet som er gitt. Vi skriver filen ved hjelp av skrivemetoden til filobjektet i mappen som er nevnt.

Kodelinje 34: Hvis det ikke er noe unntak, setter vi attributt i forespørsel som gurumessage med verdien "Filen ble lastet opp vellykket".

Kodelinje 35-36: Hvis unntak oppstår, angir du meldingen "Filopplasting mislyktes"

Kodelinje 40: Hvis filen ikke ble funnet, angir du meldingen "Ingen fil funnet"

Kodelinje 42: Videresend forespørsel ved hjelp av requestdispatcher-objekt til result.jsp med forespørsels- og responsobjekter.

Resultat.jsp

<% @ sidespråk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-resultat <% String msg = (String) request.getAttribute ("melding");out.println (msg);%>

Forklaring av koden:

Kodelinje 10: Her får vi attributtet fra forespørselsobjektet med gurumessage til et strengobjekt.

Kode Line11: Her skriver vi ut den meldingen.

Når vi utfører koden ovenfor, får vi følgende utdata

Produksjon:

Vi får et skjema der det er felt å velge en fil fra katalogen. Når filen er valgt, må vi klikke på opplastingsknappen.

Når opplastingsknappen er klikket, får vi beskjeden om at filen er lastet opp.

I diagrammet nedenfor kan vi se at filen var lastet opp i c: / guru / upload-mappen.

Laster ned fil:

I dette eksemplet skal vi laste ned en fil fra en katalog ved å klikke på knappen.

Nedlasting_1.jsp

<% @ sidespråk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Laste ned Guru-eksempel Nedlastingsfil for guru  Last ned her !!! 

Forklaring av koden:

Kodelinje 10: Her har vi gitt lenke for å laste ned en fil fra mappen c: / guru / upload ved hjelp av servlet guru_download.

Guru_download.java

demotest pakke;importere java.io.FileInputStream;importere java.io.IOException;importere java.io.PrintWriter;importere javax.servlet.ServletException;importere javax.servlet.http.HttpServlet;importere javax.servlet.http.HttpServletRequest;importere javax.servlet.http.HttpServletResponse;/ *** Servlet implementeringsklasse guru_download* /offentlig klasse guru_download utvider HttpServlet {privat statisk endelig lang serialVersionUID = 1L;beskyttet ugyldig doGet (HttpServletRequest-forespørsel, HttpServletResponse-svar) kaster ServletException, IOException {respons.setContentType ("tekst / html");PrintWriter out = respons.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Innholdsdisposisjon", "vedlegg; filnavn = \" "+ gurufile + "\" ");FileInputStream fileInputStream = ny FileInputStream (gurupath+ gurufile);int i;mens ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();ut. lukk ();}/ *** @see HttpServlet # doPost (HttpServletRequest forespørsel, HttpServletResponse svar)* /beskyttet ugyldig doPost (HttpServletRequest-forespørsel, HttpServletResponse-svar) kaster ServletException, IOException {// TODO Auto-generert metodestub}}

Forklaring av koden:

Kodelinje 3-5: Her importerer vi FileInputStream, IO Exception og PrintWriter fra java.io-pakken.

Kodelinje 15: Vi definerer guru_download servlet som utvider HttpServlet.

Kodelinje 18: Som vi har definert en href, som vil være vedlagt i URL slik at GET-metoden blir behandlet (doGet vil bli kalt i servlet) som også inkluderer forespørsels- og responsobjekter.

Kodelinje 19-20: Vi setter innhold Skriv inn svarobjekt og få også skriverobjekt fra svar.

Kodelinje 21-22: Definere en variabel som gurufile som verdi test.txt og gurupath som c: / guru / upload /

Kodelinje 23-25: Vi setter innholdstypen ved hjelp av responsobjekt, og vi bruker setHeader-metoden som setter header i responsobjektet som filnavnet som er lastet opp.

Kodelinje 27-28: Vi lager FileInputStream der vi vil legge til gurupath + gurufile.

Kodelinje 31-33: Her har vi tatt en stundsløyfe som vil kjøre til filen blir lest, og derfor har vi gitt tilstand som! = -1. I denne tilstanden skriver vi med utskriftsforfatterobjekt.

Når du utfører koden ovenfor, får du følgende utdata

Produksjon:

Produksjon:

Vi må klikke på downloading_1.jsp for å få en hyperkobling som "Last ned her". Når du klikker på denne hyperkoblingsfilen, blir den lastet ned til systemet.

Sammendrag:

  • Vi har lært om registreringsskjema for å registrere deg i en hvilken som helst søknad
  • Lært mer om hvordan innloggings- og utloggingsskjemaene fungerer.
  • Lærte også om opplasting og nedlasting av en fil via JSP.