JSP-filöverföring & Exempel på program för nedladdning av filer

Innehållsförteckning

I det här exemplet ska vi lära oss om uppladdning och nedladdning av en fil via JSP.

Filinmatning är mycket viktiga operationer. Här ska vi läsa och skriva en fil med JSP.

JSP-filöverföring

  • Vi kan ladda upp alla filer med JSP.
  • Det kan vara en textfil, binär fil, bildfil eller något annat dokument.
  • Här vid filöverföring används endast POST-metoden och inte GET-metoden.
  • Enctype-attribut ska ställas in på multipart / form-data.

Exempel: Använda åtgärd

I det här exemplet laddar vi upp en fil med ett IO-objekt

Action_file.jsp

<% @ sida språk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru-fil  Guru-filöverföring: Välj fil:

Action_file_upload.jsp

<% @ sida språk = "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 File Upload <%Filfil;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;Sträng filePath = "E: / guru99 / data";Sträng contentType = request.getContentType ();if ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory fabrik = ny DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (ny fil ("c: \\ temp"));ServletFileUpload uppladdning = ny ServletFileUpload (fabrik);upload.setSizeMax (maxFileSize);Prova{Lista fileItems = upload.parseRequest (begäran);Iterator i = fileItems.iterator ();out.println ("");out.println ("");medan (i.hasNext ()){FileItem fi = (FileItem) i.next ();om (! fi.isFormField ()) {Sträng fältnamn = fi.getFieldName ();Strängfilnamn = fi.getName ();boolean isInMemory = fi.isInMemory ();lång storlekInBytes = fi.getSize ();fil = ny fil (filePath + "ditt filnamn");fi.write (fil);out.println ("Uppladdat filnamn: + filePath + fileName + "
");}}out.println ("");out.println ("");} fångst (undantag ex) {System.out.println (ex);}}annan{out.println ("");out.println ("");out.println ("

Ingen fil uppladdad

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

Förklaring av koden:

Action_file.jsp

Kodrad 12-18: Här skapar vi formulär med filfält, som laddar upp filen till servern och åtgärden skickas till action_file_upload.jsp

Action_file_upload.jsp

Kodrad 20: Här ger vi filsökvägen till en viss sökväg

Kodrad 23-38: Här kontrollerar vi om innehållstypen är multipart / formdata. Om så är fallet är innehållet av filtyp och det läses. Efter att filen lästs skrivs den in i den tillfälliga filen och sedan konverteras den tillfälliga filen till huvudfilen.

När du kör koden ovan får du följande utdata

Produktion:

Vi laddar upp filen med hjälp av alternativet välj filknapp och uppladdningsfilknapp laddar upp filen till servern till den sökväg som anges.

Exempel: Använda JSP-operationer

I det här exemplet ska vi ladda upp en fil med JSP-operationer.

Vi tar ett formulär med "uppladdningsknappen" och när du klickar på uppladdningsknappen laddas filen upp.

Uploading_1.jsp

<% @ sida språk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru överför fil Fil:

Förklaring av koden:

Kodrad 11-12: Här tar vi en form som har åtgärder på servlet guru_upload som kommer att passera genom en metod POST. Här skriver vi också attributet attribut som anger hur formdata ska kodas och skickas till servern och det används bara med POST-metoden. Här ställer vi in ​​som multipart / form-data som är för filen (eftersom data kommer att vara stora).

Kodrad 13: Här specificerar vi guru_file-element med typfil och ger storlek som 50.

Kodrad 15: Detta är en skicka typknapp med namnet "Ladda upp" genom vilken åtgärdsservlet kommer att anropas och begäran kommer att bearbetas till det och filen kommer att läsas och skrivas in i servlet.

Guru_upload.java

paket demotest;importera java.io.File;importera java.io.IOException;importera java.util.List;importera javax.servlet.ServletException;importera javax.servlet.http.HttpServlet;importera javax.servlet.http.HttpServletRequest;importera javax.servlet.http.HttpServletResponse;importera org.apache.commons.fileupload.FileItem;importera org.apache.commons.fileupload.disk.DiskFileItemFactory;importera org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload utökar HttpServlet {privat statisk slutlig lång serieVersionUID = 1L;offentlig guru_upload () {super();// TODO Auto-genererad konstruktörstub}skyddad ogiltig doPost (HttpServletRequest-begäran, HttpServletResponse-svar) kastar ServletException, IOException {om (ServletFileUpload.isMultipartContent (begäran)) {Prova {Lista  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (begäran);för (FileItem-objekt: multiparts) {if (! item.isFormField ()) {Strängnamn = ny fil (item.getName ()). GetName ();item.write (ny fil ("c: / guru / upload" + File.separator + namn));}}// Filen har laddats upprequest.setAttribute ("gurumessage", "File Uploaded Successfully");} fångst (undantag ex) {request.setAttribute ("gurumessage", "Filöverföring misslyckades på grund av" + ex);}}annan{request.setAttribute ("gurumessage", "Ingen fil hittades");}request.getRequestDispatcher ("/ result.jsp"). vidarebefordra (begäran, svar);}}

Förklaring av koden:

Kodrad 12-14: Här måste vi importera org.apache.commons-biblioteket till konfigurationen av koden. Vi måste importera filöverföringsklassen från biblioteket org.apache.commons.

Kodrad 23: Här har vi doPost () -metoden, som kommer att kallas när vi skickar POST-metoden i JSP och den kommer att begära och svara objekt som parametrar

Kodrad 26: Här skapar vi ett objekt av ServletFileUpload-klass från fileUpload-paket från org.apache.commons-biblioteket som kontrollerar om det finns några filobjekt i JSP. Om någon hittas kommer filobjektet att tas från begäran.

Kodrad 27-32: Vi kommer att upprepa antalet filer genom att kontrollera hur många filobjekt som finns i multipartsobjekt som är ett listobjekt (om vi laddar upp mer än en fil) och sparar det i c: / guru / uppladdningsmapp med det filnamn som har angetts. Vi skriver filen med hjälp av skrivmetoden för filobjektet i den mapp som har nämnts.

Kodrad 34: Om det inte finns något undantag ställer vi in ​​attribut i begäran som gurumessage med värdet "Filen har laddats upp framgångsrikt".

Kodrad 35-36: Om undantag inträffar, ställ in meddelandet att "Filöverföring misslyckades"

Kodrad 40: Om filen inte hittades, ställ in meddelandet som "Ingen fil hittades"

Kodrad 42: Vidarebefordran av begäran med requestdispatcher-objekt till result.jsp med objekt för begäran och svar.

Resultat.jsp

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

Förklaring av koden:

Kodrad 10: Här hämtar vi attributet från begäranobjektet med värdet gurumessage till ett strängobjekt.

Kod Line11: Här skriver vi ut det meddelandet.

När vi utför koden ovan får vi följande utdata

Produktion:

Vi får ett formulär där det finns fält för att välja en fil från katalogen. När filen väl har valts måste vi klicka på uppladdningsknappen.

När uppladdningsknappen klickar får vi meddelandet att filen laddas upp.

I nedanstående diagram kan vi se att filen hade laddats upp i c: / guru / upload-mappen.

Hämtar fil:

I det här exemplet ska vi ladda ner en fil från en katalog genom att klicka på knappen.

Nedladdning_1.jsp

<% @ sida språk = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Exempel på nedladdning av Guru Guru-nedladdningsfil  Ladda ner här !!! 

Förklaring av koden:

Kodrad 10: Här har vi gett länk för att ladda ner en fil från mappen c: / guru / upload med servlet guru_download.

Guru_download.java

paket demotest;importera java.io.FileInputStream;importera java.io.IOException;importera java.io.PrintWriter;importera javax.servlet.ServletException;importera javax.servlet.http.HttpServlet;importera javax.servlet.http.HttpServletRequest;importera javax.servlet.http.HttpServletResponse;/ *** Servlet implementering klass guru_download* /offentlig klass guru_download utökar HttpServlet {privat statisk slutlig lång serieVersionUID = 1L;skyddad ogiltig doGet (HttpServletRequest-begäran, HttpServletResponse-svar) kastar ServletException, IOException {response.setContentType ("text / html");PrintWriter out = respons.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "attachment; filename = \" "+ gurufile + "\" ");FileInputStream fileInputStream = ny FileInputStream (gurupath+ gurufile);int i;medan ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @see HttpServlet # doPost (HttpServletRequest-begäran, HttpServletResponse-svar)* /skyddad ogiltig doPost (HttpServletRequest-begäran, HttpServletResponse-svar) kastar ServletException, IOException {// TODO Auto-genererad metodstub}}

Förklaring av koden:

Kodrad 3-5: Här importerar vi FileInputStream, IO Exception och PrintWriter från java.io-paketet.

Kodrad 15: Vi definierar guru_download servlet som utökar HttpServlet.

Kodrad 18: Som vi har definierat en href, som kommer att bifogas i URL så GET-metoden kommer att behandlas (doGet kommer att kallas i servlet) som också bifogar förfrågan och svarobjekt.

Kodrad 19-20: Vi ställer in innehåll Skriv in svarsobjekt och få även författarobjekt från svar.

Kodrad 21-22: Definiera en variabel som gurufile som värde test.txt och gurupath som c: / guru / upload /

Kodrad 23-25: Vi ställer in innehållstypen med svarsobjekt och vi använder metoden setHeader som anger rubriken i svarsobjektet som det filnamn som har laddats upp.

Kodrad 27-28: Vi skapar FileInputStream där vi lägger till gurupath + gurufile.

Kodrad 31-33: Här har vi tagit en stundslinga som kommer att köras tills filen läses, därför har vi gett tillstånd som! = -1. I det här tillståndet skriver vi med utskriftsobjekt ut.

När du kör ovanstående kod får du följande utdata

Produktion:

Produktion:

Vi måste klicka på downloading_1.jsp så får vi en hyperlänk som "Ladda ner här". När du klickar på den här hyperlänkfilen laddas den ner till systemet.

Sammanfattning:

  • Vi har lärt oss om registreringsformulär för att registrera dig i alla ansökningar
  • Lärde dig mer om hur inloggnings- och utloggningsformulär fungerar.
  • Lärde dig också om att ladda upp och ladda ner en fil via JSP.

Intressanta artiklar...