JSP dapat mengunggah file ke server melalui formulir HTML. Jenis file dapat berupa file teks, file biner, file gambar, atau dokumen lainnya.
Selanjutnya kita menggunakan tag HTML untuk membuat form upload file. Hal-hal berikut harus diperhatikan:
Atribut metode formulir harus disetel ke metode POST, dan metode GET tidak dapat digunakan.
Atribut form enctype perlu disetel ke multipart/form-data.
Atribut tindakan formulir perlu disetel ke alamat file jsp yang dikirimkan ke latar belakang untuk pengunggahan file. Misalnya file program uploadFile.jsp digunakan untuk memproses file yang diunggah.
Untuk mengunggah elemen file, Anda perlu menggunakan tag <input .../> dan menyetel atribut ke type="file". Jika Anda perlu mengunggah banyak file, Anda dapat mengatur nama berbeda di tag <input .../>.
Berikut ini adalah form untuk upload file. Contohnya adalah sebagai berikut:
<html><head><title>Formulir Pengunggahan File</title></head><body><h3>Unggah File:</h3>Pilih file yang akan diunggah: <br /><form action="UploadServlet" metode = "post" enctype = "multipart/form-data"><input type = "file" name = "file" size = "50" /><br /><input type = "kirim" value = "Unggah File " /></bentuk></tubuh></html>Akses file di browser lokal Anda. Tampilan antarmuka adalah sebagai berikut. Saat Anda mengklik "Unggah File", sebuah jendela akan muncul sehingga Anda dapat memilih file yang akan diunggah:
Pertama, pertama-tama kita tentukan lokasi penyimpanan file di layanan setelah diunggah. Anda dapat menulis path di program Anda, atau kita dapat mengatur direktori tempat file disimpan dengan mengatur elemen parameter konteks di web.xml. file konfigurasi, sebagai berikut Tampilkan:
<web-app>....<context-param> <description>Alamat pengunggahan file</description> <param-name>unggahan file</param-name> <param-value> c:apache-Tomcat- 5.5.29webappsdata </param-value> </context-param>....</web-app>
File skrip UploadFile.jsp berikut dapat menangani banyak file yang diunggah. Sebelum menggunakan skrip ini, kita perlu memperhatikan hal-hal berikut:
Contoh berikut bergantung pada FileUpload, jadi Anda perlu memasukkan file paket commons-fileupload.xxjar terbaru ke classpath Anda. Alamat unduhannya adalah: http://commons.apache.org/fileupload/.
FileUpload bergantung pada Commons IO, jadi Anda perlu memperkenalkan commons-io-xxjar terbaru ke classpath Anda. Alamat unduhannya adalah: http://commons.apache.org/io/.
Saat menguji contoh berikut, Anda perlu mengunggah dan mengonfirmasi bahwa ukuran file yang diunggah lebih kecil dari ukuran yang ditetapkan oleh variabel maxFileSize , jika tidak, file tidak akan berhasil diunggah.
Pastikan Anda telah membuat direktori c:temp dan c:apache-Tomcat-5.5.29webappsdata.
<%@ halaman import="java.io.*,java.util.*, javax.servlet.*" %><%@ halaman import="javax.servlet.http.*" %><%@ halaman impor= "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.*" %><% Berkas berkas; int maxFileSize = 5000 * 1024; int maxMemSize = 5000 * 1024; ServletContext konteks = pageContext.getServletContext(); konteks.getInitParameter("unggahan file"); // Verifikasi jenis konten yang diunggah String contentType = request.getContentType(); factory = new DiskFileItemFactory(); // Mengatur ukuran maksimum file yang disimpan di memori factory.setSizeThreshold(maxMemSize); Data yang disimpan secara lokal lebih besar dari maxMemSize. factory.setRepository(new File("c:\temp")); // Buat pengendali unggahan file baru ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax( maxFileSize ); coba{ // Parsing file yang diperoleh Daftar fileItems = upload.parseRequest(permintaan); Memproses file yang diunggah Iterator i = fileItems.iterator(); out.println("<html>"); out.println("<head>"); out.println("<title>Unggah file JSP</title> " ); keluar.println("</head>"); keluar.println("<body>"); sementara ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) {// Dapatkan parameter file yang diunggah String fieldName = fi.getFieldName(); .isInMemory(); long sizeInBytes = fi.getSize(); // Tulis ke file if( fileName.lastIndexOf("\") >= 0 ){ file = File baru( filePath , fileName.substring( fileName.lastIndexOf("\"))) ; }else{ file = File baru( filePath , fileName.substring(fileName.lastIndexOf("\")+1)) ; fi.write( file ) ; out.println("Nama File yang Diunggah: " + FilePath + Nama File + "<br>"); keluar.println("</body>"); keluar.println("</html>"); }catch(Pengecualian ex) { Sistem.out.println(ex); html>"); out.println("<head>"); out.println("<title>Servlet upload</title>"); out.println("</head>"); out.println("<body>"); out.println("<p>Tidak ada file yang diunggah</p>"); out.println("</body>"); out.println("</html> "); }%>
Selanjutnya mari kita akses http://localhost:8080/UploadFile.htm melalui browser. Antarmukanya seperti gambar di bawah ini, dan unggah file:
Jika skrip JSP Anda berjalan normal, file akan diunggah ke c:apache-Tomcat-5.5.29webappsdata. Anda dapat membuka folder tersebut untuk melihat apakah unggahan berhasil.