Unggah Berkas JSP & Contoh Program Pengunduhan File

Daftar Isi:

Anonim

Dalam contoh ini, kita akan belajar tentang mengunggah dan mengunduh file melalui JSP.

File Input output adalah operasi yang sangat penting. Di sini kita akan membaca dan menulis file menggunakan JSP.

Unggah File JSP

  • Kami dapat mengunggah file apa pun menggunakan JSP.
  • Ini bisa berupa file teks, file biner, file gambar atau dokumen lainnya.
  • Di sini dalam kasus pengunggahan file, hanya metode POST yang akan digunakan dan bukan metode GET.
  • Atribut enctype harus disetel ke multipart / form-data.

Contoh: Menggunakan Action

Dalam contoh ini, kami mengupload file menggunakan objek IO

Action_file.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> File Guru  Unggahan File Guru: Pilih file:

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. *"%> Unggahan File Guru <%File file;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 = baru DiskFileItemFactory ();factory.setSizeThreshold (maxMemSize);factory.setRepository (File baru ("c: \\ temp"));ServletFileUpload upload = ServletFileUpload baru (pabrik);upload.setSizeMax (maxFileSize);mencoba{Daftar fileItems = upload.parseRequest (permintaan);Iterator i = fileItems.iterator ();out.println ("");out.println ("");sementara (i.hasNext ()){FileItem fi = (FileItem) i.next ();if (! fi.isFormField ()) {String fieldName = fi.getFieldName ();String fileName = fi.getName ();boolean isInMemory = fi.isInMemory ();long sizeInBytes = fi.getSize ();file = File baru (filePath + "yourFileName");fi.write (file);out.println ("Nama File yang Diunggah: + filePath + nama file + "
");}}out.println ("");out.println ("");} catch (Exception ex) {System.out.println (ex);}}lain{out.println ("");out.println ("");out.println ("

Tidak ada file yang diunggah

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

Penjelasan kode:

Action_file.jsp

Baris Kode 12-18: Di sini kita membuat formulir dengan bidang file, yang akan mengunggah file ke server dan tindakan akan diteruskan ke action_file_upload.jsp

Action_file_upload.jsp

Baris Kode 20: Di sini kami memberikan jalur file ke jalur tertentu

Baris Kode 23-38: Di sini kami memeriksa apakah tipe konten adalah multipart / form-data. Jika demikian, maka isinya adalah tipe file, dan itu dibaca. Setelah file dibaca, itu ditulis ke dalam file sementara dan kemudian file sementara diubah ke file utama.

Saat Anda menjalankan kode di atas, Anda mendapatkan output berikut

Keluaran:

Kami mengunggah file menggunakan opsi tombol pilih file dan tombol unggah file akan mengunggah file ke server ke jalur yang disediakan.

Contoh: Menggunakan operasi JSP

Dalam contoh ini, kami akan mengunggah file menggunakan operasi JSP.

Kami akan mengambil formulir yang akan ada tombol "unggah" dan ketika Anda mengklik tombol unggah maka file akan diunggah.

Mengupload_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Guru Mengupload File File:

Penjelasan kode:

Baris Kode 11-12: Di sini kita mengambil formulir yang memiliki aksi pada servlet guru_upload yang akan melewati metode POST. Juga, di sini kita mengenkripsi atribut ie yang menentukan bagaimana data formulir harus dikodekan dan dikirim ke server dan hanya digunakan dengan metode POST. Di sini kita mengatur sebagai multipart / form-data yang untuk file (karena datanya akan besar).

Baris Kode 13: Di sini kita menentukan elemen guru_file dengan tipe file dan memberikan ukuran 50.

Baris Kode 15: Ini adalah tombol tipe kirim dengan nama "Unggah" di atasnya di mana tindakan servlet akan dipanggil dan permintaan akan diproses menjadi itu dan file akan dibaca dan ditulis ke dalam servlet.

Guru_upload.java

paket demotest;impor java.io.File;impor java.io.IOException;import java.util.List;impor javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;impor javax.servlet.http.HttpServletResponse;impor org.apache.commons.fileupload.FileItem;impor org.apache.commons.fileupload.disk.DiskFileItemFactory;impor org.apache.commons.fileupload.servlet.ServletFileUpload;public class guru_upload memperluas HttpServlet {private static final long serialVersionUID = 1L;publik guru_upload () {super();// TODO Rintisan konstruktor yang dibuat secara otomatis}protected void doPost (permintaan HttpServletRequest, respons HttpServletResponse) melontarkan ServletException, IOException {if (ServletFileUpload.isMultipartContent (request)) {coba {Buat daftar  multiparts = new ServletFileUpload (new DiskFileItemFactory ()). ParseRequest (request);untuk (FileItem item: multiparts) {if (! item.isFormField ()) {Nama string = File baru (item.getName ()). GetName ();item.write (File baru ("c: / guru / upload" + File.separator + name));}}//Berkas berhasil diunggahrequest.setAttribute ("gurumessage", "File Berhasil Diunggah");} catch (Exception ex) {request.setAttribute ("gurumessage", "Upload File Gagal karena" + ex);}}lain{request.setAttribute ("gurumessage", "File Tidak ditemukan");}request.getRequestDispatcher ("/ result.jsp"). forward (permintaan, respons);}}

Penjelasan kode:

Baris Kode 12-14: Di sini kita harus mengimpor pustaka org.apache.commons ke dalam konfigurasi kode. Kita harus mengimpor kelas fileupload dari perpustakaan org.apache.commons.

Baris Kode 23: Di sini kita memiliki metode doPost (), yang akan dipanggil saat kita meneruskan metode POST di JSP dan itu akan meminta dan menanggapi objek sebagai parameternya

Baris Kode 26: Di sini kita membuat objek kelas ServletFileUpload dari paket fileUpload dari pustaka org.apache.commons yang akan memeriksa apakah ada objek file di JSP. Jika ditemukan maka objek file tersebut akan diambil dari request.

Baris Kode 27-32: Kita akan mengulang jumlah file dengan memeriksa berapa banyak item file yang ada di objek multiparts yang merupakan objek daftar (jika kita mengunggah lebih dari satu file) dan menyimpannya ke folder c: / guru / unggah dengan nama file yang telah disediakan. Kami menulis file menggunakan metode tulis fileobject ke dalam folder yang telah disebutkan.

Baris Kode 34: Jika tidak ada pengecualian maka kita menyetel atribut di request sebagai gurumessage dengan nilai "File berhasil diunggah".

Baris Kode 35-36: Jika terjadi pengecualian maka pesan pengaturan bahwa "Unggah file gagal"

Baris Kode 40: Jika file tidak ditemukan maka atur pesan sebagai "Tidak ada file yang ditemukan"

Baris Kode 42: Meneruskan permintaan menggunakan objek requestdispatcher ke result.jsp dengan objek permintaan dan respons.

Result.jsp

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

Penjelasan kode:

Baris Kode 10: Di sini kita mendapatkan atribut dari objek permintaan dengan nilai gurumessage ke dalam objek string.

Baris Kode11: Di sini kami mencetak pesan itu.

Ketika kami menjalankan kode di atas, kami mendapatkan output berikut

Keluaran:

Kami mendapatkan formulir di mana ada bidang untuk memilih file dari direktori. Setelah file dipilih maka kita harus mengklik tombol unggah.

Setelah tombol unggah diklik, kita mendapat pesan bahwa file berhasil diunggah.

Pada diagram di bawah ini kita dapat melihat bahwa file telah diupload di folder c: / guru / upload.

Mendownload File:

Dalam contoh ini, kita akan mengunduh file dari direktori dengan mengklik tombol.

Mendownload_1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Mengunduh Contoh Guru Guru Mengunduh File  Unduh di sini !!! 

Penjelasan kode:

Baris Kode 10: Disini kami telah memberikan link untuk mendownload file dari folder c: / guru / upload menggunakan servlet guru_download.

Guru_download.java

paket demotest;impor java.io.FileInputStream;impor java.io.IOException;impor java.io.PrintWriter;impor javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;impor javax.servlet.http.HttpServletResponse;/ *** Kelas implementasi servlet guru_download* /public class guru_download extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet (permintaan HttpServletRequest, respons HttpServletResponse) melontarkan ServletException, IOException {response.setContentType ("text / html");PrintWriter out = response.getWriter ();String gurufile = "test.txt";String gurupath = "c: / guru / upload /";response.setContentType ("APPLICATION / OCTET-STREAM");response.setHeader ("Content-Disposition", "lampiran; nama file = \" "+ gurufile + "\" ");FileInputStream fileInputStream = FileInputStream baru (gurupath+ gurufile);int i;sementara ((i = fileInputStream.read ())! = -1) {out.write (i);}fileInputStream.close ();out.close ();}/ *** @lihat HttpServ # doPost (permintaan HttpServletRequest, tanggapan HttpServletResponse)* /protected void doPost (permintaan HttpServletRequest, respons HttpServletResponse) melontarkan ServletException, IOException {// TODO Rintisan metode yang dibuat secara otomatis}}

Penjelasan kode:

Baris Kode 3-5: Di sini kita mengimpor FileInputStream, IO Exception dan PrintWriter dari paket java.io.

Baris Kode 15: Kami mendefinisikan guru_download servlet yang memperluas HttpServlet.

Baris Kode 18: Seperti yang telah kita definisikan sebagai href, yang akan dimasukkan dalam URL sehingga metode GET akan diproses (doGet akan dipanggil dalam servlet) yang juga menyertakan objek permintaan dan respons.

Baris Kode 19-20: Kami mengatur jenis konten di objek respons dan juga mendapatkan objek penulis dari respons.

Baris Kode 21-22: Mendefinisikan variabel sebagai gurufile sebagai nilai test.txt dan gurupath sebagai c: / guru / upload /

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

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

Baris Kode 31-33: Di sini kita mengambil while loop yang akan berjalan sampai file dibaca, maka kita berikan kondisi sebagai! = -1. Dalam kondisi ini kita menulis dengan menggunakan objek printwriter out.

Ketika Anda menjalankan kode di atas, Anda akan mendapatkan output berikut

Keluaran:

Keluaran:

Kita harus mengklik download_1.jsp kita akan mendapatkan hyperlink sebagai "Download Disini". Ketika Anda mengklik file hyperlink ini, itu akan diunduh ke sistem.

Ringkasan:

  • Kami telah belajar tentang formulir pendaftaran untuk mendaftar ke aplikasi apa pun
  • Pelajari lebih lanjut tentang cara kerja formulir masuk dan keluar.
  • Juga belajar tentang mengunggah dan mengunduh file melalui JSP.