Muat Naik Fail JSP & Contoh Program Muat turun Fail

Isi kandungan:

Anonim

Dalam contoh ini, kita akan belajar mengenai memuat naik dan memuat turun fail melalui JSP.

Output Fail Input adalah operasi yang sangat penting. Di sini kita akan membaca dan menulis fail menggunakan JSP.

Muat Naik Fail JSP

  • Kami boleh memuat naik sebarang fail menggunakan JSP.
  • Ia boleh berupa fail teks, fail binari, fail gambar atau dokumen lain.
  • Di sini sekiranya memuat naik fail, hanya kaedah POST yang akan digunakan dan bukan kaedah GET.
  • Atribut Enctype harus ditetapkan ke multipart / form-data.

Contoh: Menggunakan Tindakan

Dalam contoh ini, kami memuat naik fail menggunakan objek IO

Tindakan_file.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Fail Guru  Muat Naik Fail Guru: Pilih fail:

Tindakan_file_upload.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ halaman import = "java.io. *, java.util. *, javax.servlet. *"%><% @ halaman import = "javax.servlet.http. *"%><% @ halaman import = "org.apache.commons.fileupload. *"%><% @ halaman import = "org.apache.commons.fileupload.disk. *"%><% @ halaman import = "org.apache.commons.fileupload.servlet. *"%><% @ halaman import = "org.apache.commons.io.output. *"%> Muat Naik Fail Guru <%Fail fail;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 = DiskFileItemFactory baru ();factory.setSizeThreshold (maxMemSize);factory.setRepository (Fail baru ("c: \\ temp"));ServletFileUpload upload = ServletFileUpload baru (kilang);muat naik.setSizeMax (maxFileSize);cuba {Senaraikan fileItems = upload.parseRequest (permintaan);Iterator i = fileItems.iterator ();out.println ("");out.println ("");sementara (i. adaSeterusnya ()){FileItem fi = (FileItem) i.next ();jika (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();boolean isInMemory = fi.isInMemory ();ukuran panjangInBytes = fi.getSize ();file = fail baru (filePath + "yourFileName");fi.write (fail);out.println ("Nama Fail yang Dimuat naik: + filePath + fileName + "
");}}out.println ("");out.println ("");} tangkapan (Pengecualian) {System.out.println (cth);}} lain {out.println ("");out.println ("");out.println ("

Tidak ada fail yang dimuat naik

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

Penjelasan kod:

Tindakan_file.jsp

Baris Kod 12-18: Di sini kita membuat formulir dengan bidang fail, yang akan memuat naik fail ke pelayan dan tindakan akan diteruskan ke action_file_upload.jsp

Tindakan_file_upload.jsp

Baris Kod 20: Di sini kita memberikan jalan fail ke jalan tertentu

Baris Kod 23-38: Di sini kita periksa sama ada jenis kandungannya adalah multipart / form-data. Sekiranya demikian, kandungannya adalah jenis fail, dan dibaca. Setelah fail dibaca, ia ditulis ke dalam fail sementara dan kemudian fail sementara itu akan ditukar menjadi fail utama.

Apabila anda melaksanakan kod di atas, anda akan mendapat output berikut

Pengeluaran:

Kami memuat naik fail menggunakan pilihan butang fail dan butang muat naik fail akan memuat naik fail ke pelayan ke jalan yang disediakan.

Contoh: Menggunakan operasi JSP

Dalam contoh ini, kita akan memuat naik fail menggunakan operasi JSP.

Kami akan mengambil borang yang akan mempunyai butang "muat naik" dan apabila anda mengklik butang muat naik maka fail tersebut akan diunggah.

Memuat naik_1.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru Memuat Naik Fail Fail:

Penjelasan kod:

Baris Kod 11-12: Di sini kita mengambil bentuk yang memiliki tindakan pada servlet guru_upload yang akan melalui metode POST. Juga, di sini kita menyertakan iaitu atribut yang menentukan bagaimana data bentuk harus dikodekan dan dikirim ke pelayan dan hanya digunakan dengan metode POST. Di sini kita menetapkan sebagai multipart / form-data yang untuk fail (kerana data akan besar).

Baris Kod 13: Di sini kita menentukan elemen guru_file dengan jenis fail dan memberikan ukuran sebagai 50.

Baris Kod 15: Ini adalah butang jenis kirim dengan nama "Unggah" di atasnya di mana servlet tindakan akan dipanggil dan permintaan akan diproses menjadi itu dan fail akan dibaca dan ditulis ke servlet.

Guru_upload.java

demotest pakej;import java.io.File;import java.io.IOException;import java.util.List;import 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;guru_upload kelas awam meluaskan HttpServlet {serialVersionUID panjang statik persendirian = 1L;guru awam_upload () {super ();// TODO Stub konstruktor yang dihasilkan secara automatik}dilindungi dooid Pos (permintaan HttpServletRequest, respons HttpServletResponse) melemparkan ServletException, IOException {jika (ServletFileUpload.isMultipartContent (permintaan)) {cuba {Senaraikan  multiparts = ServletFileUpload baru (DiskFileItemFactory baru ()). ParseRequest (permintaan);untuk (item FileItem: multiparts) {jika (! item.isFormField ()) {Nama rentetan = Fail baru (item.getName ()). GetName ();item.write (Fail baru ("c: / guru / muat naik" + File.separator + nama));}}// Fail berjaya dimuat naikrequest.setAttribute ("gurumessage", "Fail berjaya dimuat naik");} tangkapan (Pengecualian) {request.setAttribute ("gurumessage", "Muat Naik Fail Gagal kerana" + ex);}} lain {request.setAttribute ("gurumessage", "Tiada Fail dijumpai");}request.getRequestDispatcher ("/ result.jsp"). maju (permintaan, respons);}}

Penjelasan kod:

Baris Kod 12-14: Di sini kita perlu mengimport perpustakaan org.apache.commons ke dalam konfigurasi kod. Kita mesti mengimport kelas muat naik fail dari perpustakaan org.apache.commons.

Baris Kod 23: Di sini kita mempunyai kaedah doPost (), yang akan disebut ketika kita melewati metode POST di JSP dan ia akan meminta dan memberi respons objek sebagai parameternya

Baris Kod 26: Di sini kita membuat objek kelas ServletFileUpload dari pakej fileUpload dari perpustakaan org.apache.commons yang akan memeriksa sama ada terdapat objek fail di JSP. Sekiranya ada, objek fail tersebut akan diambil dari permintaan.

Baris Kod 27-32: Kami akan mengulangi jumlah fail dengan memeriksa berapa banyak item fail yang ada di objek multipart yang merupakan objek senarai (jika kita memuat naik lebih dari satu fail) dan menyimpannya ke folder c: / guru / muat naik dengan nama fail yang telah disediakan. Kami sedang menulis fail menggunakan kaedah tulis dari objektif fail ke dalam folder yang telah disebutkan.

Baris Kod 34: Jika tidak ada pengecualian maka kami menetapkan atribut yang diminta sebagai gurumessage dengan nilai "Fail berjaya diunggah".

Baris Kod 35-36: Sekiranya berlaku pengecualian, tetapkan mesej bahawa "Muat naik fail gagal"

Baris Kod 40: Jika fail tidak dijumpai maka tetapkan pesan sebagai "Tidak ada fail dijumpai"

Baris Kod 42: Memajukan permintaan menggunakan objek requestdispatcher ke result.jsp dengan objek permintaan dan respons.

Hasil.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Hasil Guru <% String msg = (String) request.getAttribute ("message");out.println (msg);%>

Penjelasan kod:

Baris Kod 10: Di sini kita mendapatkan atribut dari objek permintaan dengan nilai gurumessage menjadi objek rentetan.

Code Line11: Di sini kita mencetak mesej itu.

Apabila kita melaksanakan kod di atas, kita mendapat output berikut

Pengeluaran:

Kami mendapat borang di mana terdapat bidang untuk memilih fail dari direktori. Setelah fail dipilih maka kita harus mengklik butang muat naik.

Setelah butang muat naik diklik, kami akan mendapat mesej bahawa fail berjaya dimuat naik.

Dalam rajah di bawah ini kita dapat melihat bahawa fail telah dimuat naik dalam folder c: / guru / upload

Memuat turun Fail:

Dalam contoh ini, kita akan memuat turun fail dari direktori dengan mengklik butang.

Memuat turun_1.jsp

<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Memuat turun Contoh Guru Guru Memuat turun Fail  Muat turun di sini !!! 

Penjelasan kod:

Baris Kod 10: Di sini kami telah memberikan pautan untuk memuat turun fail dari folder c: / guru / muat naik menggunakan servlet guru_download.

Guru_download.java

demotest pakej;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/ *** Guru_download kelas pelaksanaan servlet* /guru kelas awam_download meluaskan HttpServlet {serialVersionUID panjang statik persendirian = 1L;dilindungi doGet (permintaan HttpServletRequest, respons HttpServletResponse) melemparkan ServletException, IOException {respons.setContentType ("teks / html");PrintWriter out = respons.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / muat naik /";respon.setContentType ("APLIKASI / OCTET-STREAM");Respons.setHeader ("Kandungan-Pelupusan", "lampiran; nama fail = \" "+ gurufile + "\" ");FileInputStream fileInputStream = FileInputStream baru (gurupath+ gurufile);int i;sementara ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();keluar.tutup ();}/ *** @sihat HttpServlet # doPost (permintaan HttpServletRequest, respons HttpServletResponse)* /dilindungi dooid Pos (permintaan HttpServletRequest, respons HttpServletResponse) melemparkan ServletException, IOException {// TODO Kaedah penjanaan automatik}}

Penjelasan kod:

Baris Kod 3-5: Di sini kita mengimport FileInputStream, Pengecualian IO dan PrintWriter dari pakej java.io.

Baris Kod 15: Kami menentukan servlet guru_download yang meluaskan HttpServlet.

Baris Kod 18: Seperti yang telah kita tentukan href, yang akan dilampirkan dalam URL sehingga metode GET akan diproses (doGet akan dipanggil dalam servlet) yang juga melampirkan objek permintaan dan respons.

Baris Kod 19-20: Kami menetapkan Jenis kandungan dalam objek tindak balas dan juga mendapatkan objek penulis dari tindak balas.

Baris Kod 21-22: Mendefinisikan pemboleh ubah sebagai gurufile sebagai nilai test.txt dan gurupath sebagai c: / guru / muat naik /

Baris Kod 23-25: Kami menetapkan jenis konten menggunakan objek respons dan kami menggunakan metode setHeader yang menetapkan header ke objek respons sebagai nama file yang telah diunggah.

Baris Kod 27-28: Kami membuat FileInputStream di mana kami akan menambahkan gurupath + gurufile.

Garis Kod 31-33: Di sini kita telah mengambil gelung sementara yang akan berjalan sehingga fail dibaca, oleh itu kita telah memberikan syarat sebagai! = -1. Dalam keadaan ini kita menulis menggunakan objek pencetak keluar.

Apabila anda melaksanakan kod di atas, anda akan mendapat output berikut

Pengeluaran:

Pengeluaran:

Kita mesti klik pada memuat turun_1.jsp kita akan mendapat hyperlink sebagai "Muat turun Di Sini". Apabila anda mengklik fail pautan ini, ia akan dimuat turun ke dalam sistem.

Ringkasan:

  • Kami telah mengetahui tentang borang pendaftaran untuk mendaftar ke mana-mana aplikasi
  • Ketahui lebih lanjut mengenai bagaimana proses log masuk dan keluar berfungsi.
  • Juga belajar mengenai memuat naik dan memuat turun fail melalui JSP.