JSP-fil upload & Eksempler på program til download af filer

Indholdsfortegnelse:

Anonim

I dette eksempel vil vi lære om upload og download af en fil via JSP.

File Input output er meget vigtige operationer. Her skal vi læse og skrive en fil ved hjælp af JSP.

Upload af JSP-fil

  • Vi kan uploade alle filer ved hjælp af JSP.
  • Det kan være en tekstfil, binær fil, billedfil eller ethvert andet dokument.
  • I tilfælde af uploade af filer bruges kun POST-metoden og ikke GET-metoden.
  • Enctype-attribut skal indstilles til multipart / form-data.

Eksempel: Brug af handling

I dette eksempel uploader vi en fil ved hjælp af IO-objekt

Action_file.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-fil  Guru-filupload: Vælg fil:

Action_fil_upload.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ side import = "java.io. *, java.util. *, javax.servlet. *"%><% @ side import = "javax.servlet.http. *"%><% @ page import = "org.apache.commons.fileupload. *"%><% @ side import = "org.apache.commons.fileupload.disk. *"%><% @ side import = "org.apache.commons.fileupload.servlet. *"%><% @ side import = "org.apache.commons.io.output. *"%> Upload af Guru-fil <%Fil fil;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 fabrik = ny DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (ny fil ("c: \\ temp"));ServletFileUpload upload = ny ServletFileUpload (fabrik);upload.setSizeMax (maxFileSize);prøve{Liste fileItems = upload.parseRequest (anmodning);Iterator i = fileItems.iterator ();out.println ("");out.println ("");mens (i.hasNext ()){FileItem fi = (FileItem) i.next ();hvis (! fi.isFormField ()) {Streng feltnavn = fi.getFieldName ();String fileName = fi.getName ();boolsk isInMemory = fi.isInMemory ();lang sizeInBytes = fi.getSize ();fil = ny fil (filePath + "dit filnavn");fi.write (fil);out.println ("Uploadet filnavn: + filePath + filnavn + "
");}}out.println ("");out.println ("");} fangst (undtagelse ex) {System.out.println (ex);}}andet{out.println ("");out.println ("");out.println ("

Ingen fil uploadet

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

Forklaring af koden:

Action_file.jsp

Kodelinje 12-18: Her opretter vi formular med filfelt, som vil uploade filen til serveren, og handlingen overføres til action_file_upload.jsp

Action_fil_upload.jsp

Kodelinje 20: Her giver vi filstien til en bestemt sti

Kodelinje 23-38: Her kontrollerer vi, om indholdstypen er multipart / form-data. Hvis det er tilfældet, er indholdet af filtype, og det læses. Efter filens læsning skrives den i den midlertidige fil, og derefter konverteres den midlertidige fil til hovedfilen.

Når du udfører ovenstående kode, får du følgende output

Produktion:

Vi uploader fil ved hjælp af vælg filknapindstilling, og upload filknap vil uploade filen til serveren til den sti, der er angivet.

Eksempel: Brug af JSP-operationer

I dette eksempel skal vi uploade en fil ved hjælp af JSP-operationer.

Vi tager en formular, der har "upload" -knappen, og når du klikker på upload-knappen, vil filen blive uploadet.

Uploading_1.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru uploader fil Fil:

Forklaring af koden:

Kodelinje 11-12: Her tager vi en form, der har handling på servlet guru_upload, der vil passere gennem en metode POST. Her angiver vi også attribut, der angiver, hvordan formdata skal kodes og sendes til serveren, og de bruges kun med POST-metoden. Her indstiller vi som multipart / form-data, der er til filen (da data vil være store).

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

Kodelinje 15: Dette er en sendetypeknap med navnet "Upload", hvorigennem handlingsservlet kaldes, og anmodningen behandles til det, og filen læses og skrives ind i servleten.

Guru_upload.java

demotest pakke;import java.io.File;importere java.io.IOException;importere java.util.List;importere 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;import org.apache.commons.fileupload.servlet.ServletFileUpload;offentlig klasse guru_upload udvider HttpServlet {privat statisk endelig lang serialVersionUID = 1L;offentlig guru_upload () {super();// TODO Auto-genereret konstruktørstub}beskyttet ugyldigt doPost (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {hvis (ServletFileUpload.isMultipartContent (anmodning)) {prøve {Liste  multiparts = ny ServletFileUpload (ny DiskFileItemFactory ()). ParseRequest (anmodning);for (FileItem-vare: multiparts) {hvis (! item.isFormField ()) {String name = new File (item.getName ()). GetName ();item.write (ny fil ("c: / guru / upload" + File.separator + navn));}}// Filen blev uploadet med succesrequest.setAttribute ("gurumessage", "Fil uploadet med succes");} fangst (undtagelse ex) {request.setAttribute ("gurumessage", "Fil upload mislykkedes på grund af" + ex);}}andet{request.setAttribute ("gurumessage", "Ingen fil fundet");}request.getRequestDispatcher ("/ result.jsp"). videresend (anmodning, svar);}}

Forklaring af koden:

Kodelinje 12-14: Her bliver vi nødt til at importere org.apache.commons-biblioteket til konfigurationen af ​​koden. Vi bliver nødt til at importere fileupload-klassen fra org.apache.commons-biblioteket.

Kodelinje 23: Her har vi doPost () -metoden, der kaldes, når vi sender POST-metoden i JSP, og den vil anmode om og svare på objekter som parametre

Kodelinje 26: Her opretter vi et objekt af ServletFileUpload-klasse fra fileUpload-pakke fra org.apache.commons-biblioteket, der kontrollerer, om der er nogen filobjekter i JSP. Hvis nogen findes, tages disse filobjekter fra anmodning.

Kodelinje 27-32: Vi gentager antallet af filer ved at kontrollere, hvor mange filelementer der er til stede i multipartsobjekt, som er et listeobjekt (hvis vi uploader mere end en fil) og gemme det i c: / guru / upload-mappe med det filnavn, der er angivet. Vi skriver filen ved hjælp af skrivemetoden for filobjektet i den omtalte mappe.

Kodelinje 34: Hvis der ikke er nogen undtagelse, indstiller vi attribut i anmodning som gurumessage med værdien "Fil uploadet med succes".

Kodelinje 35-36: Hvis der forekommer undtagelse, skal du angive besked om, at "Filupload mislykkedes"

Kodelinje 40: Hvis filen ikke blev fundet, indstilles meddelelsen som "Ingen fil fundet"

Kodelinje 42: Videresend anmodning ved hjælp af requestdispatcher-objekt til result.jsp med anmodnings- og svarobjekter.

Resultat.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-resultat <% String msg = (String) request.getAttribute ("meddelelse");out.println (msg);%>

Forklaring af koden:

Kodelinje 10: Her henter vi attributten fra anmodningsobjektet med værdi gurumessage ind i et strengobjekt.

Kode Line11: Her udskriver vi den besked.

Når vi udfører ovenstående kode, får vi følgende output

Produktion:

Vi får en form, hvor der er felter til at vælge en fil fra biblioteket. Når filen er valgt, skal vi klikke på upload-knappen.

Når uploadknappen er klikket, får vi beskeden om, at filen uploades med succes.

I nedenstående diagram kan vi se, at filen var uploadet i c: / guru / upload-mappen.

Downloader fil:

I dette eksempel skal vi downloade en fil fra et bibliotek ved at klikke på knappen.

Downloading_1.jsp

<% @ side sprog = "java" contentType = "tekst / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Download af Guru-eksempel Guru-downloadfil  Download her !!! 

Forklaring af koden:

Kodelinje 10: Her har vi givet link til at downloade en fil fra mappen c: / guru / upload ved hjælp af servlet guru_download.

Guru_download.java

demotest pakke;importere java.io.FileInputStream;importere java.io.IOException;import java.io.PrintWriter;importere javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Servlet implementeringsklasse guru_download* /offentlig klasse guru_download udvider HttpServlet {privat statisk endelig lang serialVersionUID = 1L;beskyttet ugyldigt doGet (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {respons.setContentType ("tekst / html");PrintWriter out = respons.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";respons.setContentType ("APPLIKATION / OCTET-STREAM");respons.setHeader ("Indholdsdisponering", "vedhæftet fil; filnavn = \" "+ gurufile + "\" ");FileInputStream fileInputStream = ny FileInputStream (gurupath+ gurufile);int i;mens ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (HttpServletRequest anmodning, HttpServletResponse svar)* /beskyttet ugyldigt doPost (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {// TODO Auto-genereret metodestub}}

Forklaring af koden:

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

Kodelinje 15: Vi definerer guru_download servlet, som udvider HttpServlet.

Kodelinje 18: Som vi har defineret en href, som vil være vedlagt i URL, så GET-metoden bliver behandlet (doGet vil blive kaldt i servlet), som også omslutter anmodnings- og svarobjekter.

Kodelinje 19-20: Vi indstiller indhold Indtast svarobjekt og få også forfatterobjekt fra svar.

Kodelinje 21-22: Definition af en variabel som gurufile som værdi test.txt og gurupath som c: / guru / upload /

Kodelinje 23-25: Vi indstiller indholdstypen ved hjælp af responsobjekt, og vi bruger setHeader-metoden, som sætter header i responsobjektet som det filnavn, der er uploadet.

Kodelinje 27-28: Vi opretter FileInputStream, hvor vi tilføjer gurupath + gurufile.

Kodelinje 31-33: Her har vi taget et stykke løb, der kører, indtil filen læses, og derfor har vi givet betingelse som! = -1. I denne tilstand skriver vi med printwriter-objekt ud.

Når du udfører ovenstående kode, får du følgende output

Produktion:

Produktion:

Vi er nødt til at klikke på downloading_1.jsp, vi får et hyperlink som "Download her". Når du klikker på denne hyperlinkfil, downloades den til systemet.

Resumé:

  • Vi har lært om registreringsformular til at registrere sig i enhver ansøgning
  • Lær mere om, hvordan login- og logoutformularerne fungerer.
  • Lærte også om upload og download af en fil via JSP.