JSP failu augšupielāde & Failu lejupielādes programmu piemēri

Satura rādītājs:

Anonim

Šajā piemērā mēs uzzināsim par faila augšupielādi un lejupielādi, izmantojot JSP.

Faila ievades izvade ir ļoti svarīgas darbības. Šeit mēs lasīsim un rakstīsim failu, izmantojot JSP.

JSP failu augšupielāde

  • Mēs varam augšupielādēt visus failus, izmantojot JSP.
  • Tas var būt teksta fails, binārs fails, attēlu fails vai jebkurš cits dokuments.
  • Failu augšupielādes gadījumā tiks izmantota tikai POST metode, nevis GET metode.
  • Enctype atribūtam jābūt iestatītam uz multipart / form-data.

Piemērs: Darbības izmantošana

Šajā piemērā mēs augšupielādējam failu, izmantojot IO objektu

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru fails <ķermenis> Guru failu augšupielāde: Atlasiet failu:

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 faila augšupielāde <ķermenis><%Failu fails;int maxFileSize = 5000 * 1024;int maxMemSize = 5000 * 1024;String filePath = "E: / guru99 / dati";String contentType = request.getContentType ();ja ((contentType.indexOf ("multipart / form-data")> = 0)) {DiskFileItemFactory factory = jauns DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (jauns fails ("c: \\ temp"));ServletFileUpload upload = jauns ServletFileUpload (rūpnīca);upload.setSizeMax (maxFileSize);izmēģināt {Sarakstā fileItems = upload.parseRequest (pieprasījums);Iterators i = fileItems.iterator ();out.println ("");out.println ("<ķermenis>");kamēr (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();būla vērtība irInMemory = fi.isInMemory ();garš izmērsInBytes = fi.getSize ();file = new File (filePath + "yourFileName");fi.write (fails);out.println ("Augšupielādētais faila nosaukums: + filePath + fileName + "
");}}out.println ("");out.println ("");} nozveja (izņēmums ex) {System.out.println (ex);}} cits {out.println ("");out.println ("<ķermenis>");out.println ("

Nav augšupielādēts fails

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

Koda skaidrojums:

Action_file.jsp

Kodu rinda 12-18: Šeit mēs izveidojam veidlapu ar faila lauku, kas augšupielādēs failu serverī un darbība tiks nodota vietnei action_file_upload.jsp

Action_file_upload.jsp

Koda rindiņa 20: Šeit mēs piešķiram faila ceļu uz noteiktu ceļu

Kodu rinda 23-38: šeit mēs pārbaudām, vai satura tips ir daudzdaļīgs / veidlapas dati. Ja tas tā ir, tad saturs ir faila tipa, un tas tiek nolasīts. Pēc faila nolasīšanas tas tiek ierakstīts pagaidu failā un pēc tam pagaidu fails tiek pārveidots par galveno failu.

Izpildot iepriekš minēto kodu, tiek parādīta šāda izeja

Izeja:

Mēs augšupielādējam failu, izmantojot pogas izvēlēties failu pogu, un augšupielādes poga failu augšupielādēs serverī uz norādīto ceļu.

Piemērs: JSP darbību izmantošana

Šajā piemērā mēs augšupielādēsim failu, izmantojot JSP darbības.

Mēs izmantosim veidlapu, kurai būs poga "Augšupielādēt", un, noklikšķinot uz pogas Augšupielādēt, fails tiks augšupielādēts.

Augšupielādējot_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru augšupielādē failu <ķermenis>Fails:

Koda skaidrojums:

Koda rinda 11-12: Šeit mēs izmantojam formu, kurai ir darbība ar servletu guru_upload, kas iet caur metodi POST. Arī šeit mēs ierakstām atribūtu, kas norāda, kā formas dati jākodē un jānosūta uz serveri, un tas tiek izmantots tikai ar POST metodi. Šeit mēs iestatām kā daudzdaļīgus / veidlapas datus, kas paredzēti failam (jo dati būs lieli).

13. koda rindiņa: Šeit mēs norādām elementu guru_file ar tipa failu un lielumu norādām kā 50.

15. koda rindiņa: Šī ir iesniegšanas veida poga ar nosaukumu "Augšupielādēt", caur kuru tiks izsaukta darbības servleta un pieprasījums tiks apstrādāts tajā, un fails tiks nolasīts un ierakstīts servletī.

Guru_upload.java

paketes demotest;importēt java.io.File;importēt java.io.IOException;importēt java.util.List;importēt javax.servlet.ServletException;importēt javax.servlet.http.HttpServlet;importēt javax.servlet.http.HttpServletRequest;importēt javax.servlet.http.HttpServletResponse;importēt org.apache.commons.fileupload.FileItem;importēt org.apache.commons.fileupload.disk.DiskFileItemFactory;importēt org.apache.commons.fileupload.servlet.ServletFileUpload;publiskās klases guru_upload paplašina vietni HttpServlet {privāta statiska galīgā garā sērijaVersijaUID = 1L;public guru_upload () {super ();// TODO Automātiski ģenerēts konstruktora spraudnis}protected void doPost (HttpServletRequest pieprasījums, HttpServletResponse atbilde) izmet ServletException, IOException {ja (ServletFileUpload.isMultipartContent (pieprasījums)) {izmēģināt {Sarakstā  multiparts = new ServletFileUpload (jauns DiskFileItemFactory ()). ParseRequest (pieprasījums);priekš (FileItem item: multiparts) {ja (! item.isFormField ()) {Virknes nosaukums = jauns fails (item.getName ()). GetName ();item.write (new File ("c: / guru / upload" + File.separator + nosaukums));}}// Fails ir veiksmīgi augšupielādētsrequest.setAttribute ("gurumessage", "Fails ir veiksmīgi augšupielādēts");} nozveja (izņēmums ex) {request.setAttribute ("gurumessage", "Faila augšupielāde neizdevās" + ex dēļ);}} cits {request.setAttribute ("gurumessage", "Nav atrasts fails");}request.getRequestDispatcher ("/ result.jsp"). pārsūtīt (pieprasījums, atbilde);}}

Koda skaidrojums:

Kodu rinda 12-14: Šeit mums būs jāimportē org.apache.commons bibliotēka koda konfigurācijā. Mums būs jāimportē failu augšupielādes klase no org.apache.commons bibliotēkas.

23. koda rindiņa: Šeit mums ir metode doPost (), kas tiks izsaukta, kad mēs JSP nododam metodi POST, un tā kā parametrus pieprasīs un atbildēs objektus

Kodu rinda 26: Šeit mēs izveidojam ServletFileUpload klases objektu no fileUpload pakotnes no org.apache.commons bibliotēkas, kas pārbaudīs, vai JSP nav failu objektu. Ja kāds ir atrasts, tad šis faila objekts tiks ņemts no pieprasījuma.

Kodu rinda 27-32: Mēs atkārtosim failu skaitu, pārbaudot, cik daudz faila vienumu ir vairāku daļu objektā, kas ir saraksta objekts (ja augšupielādējam vairāk nekā vienu failu), un saglabāsim to c: / guru / upload mapē ar norādītais faila nosaukums. Mēs rakstām failu, izmantojot fileobject rakstīšanas metodi, jau minētajā mapē.

34. koda rindiņa: ja nav izņēmuma, pieprasījumā mēs iestatām atribūtu kā gurumessage ar vērtību "Fails ir veiksmīgi augšupielādēts".

Kodu rinda 35-36: ja rodas izņēmums, tiek iestatīts ziņojums "Faila augšupielāde neizdevās"

40. koda rindiņa: ja fails nav atrasts, iestatiet ziņojumu kā “Nav atrasts fails”

Kodu rinda 42: Pieprasījuma pārsūtīšana, izmantojot requestdispatcher objektu result.jsp ar pieprasījuma un atbildes objektiem.

Rezultāts.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru rezultāts <ķermenis><% String msg = (virkne) request.getAttribute ("ziņojums");out.println (msg);%>

Koda skaidrojums:

10. koda rindiņa: Šeit mēs iegūstam atribūtu no pieprasījuma objekta ar vērtību gurumessage virknes objektā.

Koda rindiņa11: Šeit mēs drukājam šo ziņojumu.

Izpildot iepriekš minēto kodu, mēs iegūstam šādu izvadi

Izeja:

Mēs iegūstam veidlapu, kurā ir lauki, lai izvēlētos failu no direktorija. Kad fails ir atlasīts, mums jānoklikšķina uz augšupielādes pogas.

Kad noklikšķina uz augšupielādes pogas, mēs saņemam ziņojumu, ka fails ir veiksmīgi augšupielādēts.

Zemāk redzamajā diagrammā redzam, ka fails tika augšupielādēts mapē c: / guru / upload.

Notiek faila lejupielāde:

Šajā piemērā mēs lejupielādēsim failu no direktorijas, noklikšķinot uz pogas.

Lejupielādējot_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Lejupielādē Guru piemēru <ķermenis>Guru faila lejupielāde  Lejupielādējiet šeit !!! 

Koda skaidrojums:

10. koda rindiņa: Šeit mēs esam norādījuši saiti, lai lejupielādētu failu no mapes c: / guru / upload, izmantojot servleta guru_download

Guru_download.java

paketes demotest;importēt java.io.FileInputStream;importēt java.io.IOException;importēt java.io.PrintWriter;importēt javax.servlet.ServletException;importēt javax.servlet.http.HttpServlet;importēt javax.servlet.http.HttpServletRequest;importēt javax.servlet.http.HttpServletResponse;/ *** Servletu ieviešanas klase guru_download* /publiskās klases guru_download paplašina HttpServlet {privāta statiska galīgā garā sērijaVersijaUID = 1L;aizsargāta void doGet (HttpServletRequest pieprasījums, HttpServletResponse atbilde) izmet ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();Virknes gurufile = "test.txt";Virknes gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "pielikums; faila nosaukums = \" "+ gurufails + "\" ");FileInputStream fileInputStream = jauns FileInputStream (gurupath+ gurufile);int i;while ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @ skatiet HttpServlet # doPost (HttpServletRequest pieprasījums, HttpServletResponse atbilde)* /protected void doPost (HttpServletRequest pieprasījums, HttpServletResponse atbilde) izmet ServletException, IOException {// TODO Automātiski ģenerētās metodes spraudnis}}

Koda skaidrojums:

Kodu rinda 3-5: šeit mēs importējam FileInputStream, IO Exception un PrintWriter no java.io pakotnes.

15. koda rindiņa: Mēs definējam guru_download servletīklu, kas paplašina HttpServlet.

18. koda rindiņa: Tā kā mēs esam definējuši href, kas tiks ievietots URL, GET metode tiks apstrādāta (doGet tiks izsaukta servletī), kas ietver arī pieprasījuma un atbildes objektus.

Koda rinda 19-20: atbildes objektā tiek iestatīts satura tips, kā arī tiek iegūts rakstītāja objekts no atbildes.

Kodu rinda 21–22: mainīgā definēšana kā gurufile kā vērtība test.txt un gurupath kā ​​c: / guru / upload /

Kodu rinda 23-25: Mēs iestatām satura tipu, izmantojot atbildes objektu, un mēs izmantojam metodi setHeader, kas atbildes objektā kā augšupielādēto faila nosaukumu iestata galveni.

Kodu rinda 27-28: mēs veidojam FileInputStream, kurā pievienosim gurupath + gurufile.

Kodu rinda 31-33: Šeit mēs esam uzņēmuši kādu laiku, kas darbosies, līdz fails tiks nolasīts, tāpēc mēs esam norādījuši nosacījumu kā! = -1. Šajā stāvoklī mēs rakstām, izmantojot printwriter object out.

Izpildot iepriekš minēto kodu, jūs iegūsiet šādu izvadi

Izeja:

Izeja:

Mums jānoklikšķina uz downloading_1.jsp, un mēs iegūsim hipersaiti kā "Lejupielādēt šeit". Noklikšķinot uz šī hipersaites faila, tas tiks lejupielādēts sistēmā.

Kopsavilkums:

  • Mēs esam uzzinājuši par reģistrācijas veidlapu, lai reģistrētos jebkurā pieteikumā
  • Uzzināja vairāk par to, kā darbojas pieteikšanās un atteikšanās veidlapas.
  • Uzzinājāt arī par faila augšupielādi un lejupielādi, izmantojot JSP.