Spesifikasi Servlet 3.0 HttpservletRequest telah menyediakan metode untuk menangani unggahan file, tetapi unggahan tersebut perlu dilakukan di servlet. Struts2 menyediakan paket yang lebih sederhana.
Struts2 menggunakan kerangka pengunggahan file-file Umum Jakarta secara default. Oleh karena itu, menggunakan fungsi unggahan file Struts2, Anda perlu menambahkan dua paket toples, yaitu Commons-io-2.2.jar dan commons-fileupload-1.3.1.jar.
Struts2 Contoh Unggah File Sederhana:
1. Halaman Unggah File
Untuk mengunggah file, metode formulir harus diatur untuk memposting dan enctype diatur ke multipart/form-data. Setelah enctype diatur ke multipart/form-data, browser akan menggunakan aliran biner untuk memproses data formulir.
<%@ taglib awalan = "s" uri = "/struts-tags"%> <%-dibuat oleh Intellij Idea. Pengguna: Tanggal Administrator: 2018/1/16 Waktu: 14:06 Untuk Mengubah Template ini Gunakan File | Pengaturan | Templat file .--%> <%@ page contentType = "text/html; charset = utf-8" language = "java"%> <html> <head> <title> struts2 File sederhana Unggah </iteme> </head> <t body> <s form/formule = "file_upload" METODE = "POST" POST "POST" POST "Multipe =" file "/> <s: kirim nilai =" unggah "/> </s: form> </body> </html>
2. Memproses tindakan permintaan unggahan
/** * Deskripsi: Struts2 Upload File Sederhana * Penulis: Eleven * Tanggal: 2018/1/24 10:39 */FileAction kelas publik memperluas ActionSupport {// Unggah File Private Upload Pribadi; // Unggah Jenis File Private String UploadContentType; // Unggah Nama File Private String UploadFileName; // Unggah unggahan file yang diizinkan; Private String AllowTypes diatur secara dinamis di struts.xml menggunakan tag param di struts.xml; halaman string publik () {return "page"; } unggah public void () {// unggah: // 1. Baca konten file // 2. Tulis konten file ke file yang ditentukan coba {System.out.println ("File unggah diizinkan type ="+izinTypes); String realPath = servletActionContext.getSerVletContext (). GetRealPath ("/unggah"); System.out.println ("jalur absolut proyek ="+realpath); // Buat File Simpan Direktori File Baru (RealPath) .mkdir (); File file = file baru (realpath+"/"+unggahFileName); // buat if (! File.exists ()) {file.createNewFile (); } FileOutputStream out = FileOutputStream baru (file); FileInputStream di = FileInputStream baru (unggah); byte [] buffer = byte baru [1024]; int len = 0; // tulis saat membaca dan menulis 1kb setiap kali menulis 1kb while ((len = in.read (buffer))> 0) {out.write (buffer, 0, len); } System.out.println ("File Unggah berhasil ..."); } catch (Exception e) {E.PrintStackTrace (); }} file publik getUpload () {return unggahan; } public void setupload (unggah file) {this.upload = unggah; } public String getUploadContentType () {return unggahcontentType; } public void setuploadContentType (string unggahcontentType) {this.uploadContentType = unggahcontentType; } public string getUploadFileName () {return unggahFileName; } public void setuploadFileName (String unggahfileName) {this.uploadFileName = unggahFileName; } public string getAllowTypes () {return allowTypes; } public void setAllowTypes (String AllowTypes) {this.allowTypes = AllowTypes; }}Jika formulir berisi bidang file dengan atribut nama XXX, maka tindakan yang sesuai perlu menggunakan tiga variabel anggota untuk merangkum informasi bidang file.
Variabel anggota XXX dari file tipe merangkum konten file yang sesuai dengan bidang file.
Variabel anggota XXXFileName dari string tipe merangkum nama file file yang sesuai dengan bidang file.
Variabel anggota XXXContentType dari string tipe merangkum jenis file dari file yang sesuai dengan bidang file.
3. Mengkonfigurasi struts.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts.apacy.org/dtds/struts-2.3. value = "false"/> <constant name = "struts.devMode" value = "true"/> <package name = "default" namespace = "/" extends = "struts-default"> <!-unggahan file-> <action name = "file_*" Method = "{1}"> <Hasil Nama = "halaman">/pangkr-in. properti. Berikut adalah contoh untuk mengatur tipe yang memungkinkan pengunggahan file, tetapi program tindakan tidak melakukan banyak pemrosesan -> <param name = "AllowTypes"> gambar/png, gambar/gif, gambar/jpeg </par param> </action> </package> </struts>Interceptor mengimplementasikan pemfilteran file
Struts2 menyediakan pencegat untuk unggahan file, fileupload. Agar interseptor ini bekerja, referensi pencegat harus dikonfigurasi dalam tindakan.
Saat mengkonfigurasi Interceptor Fileupload, Anda dapat menentukan dua parameter untuk itu:
AllowTypes: Jenis file yang diizinkan untuk diunggah, dipisahkan oleh beberapa jenis file dengan koma bahasa Inggris
Maksimal: Ukuran file diizinkan untuk diunggah, dalam byte.
Ketika pemfilteran file gagal, sistem secara otomatis ditransfer ke tampilan logis input, sehingga tampilan logis yang disebut input harus dikonfigurasi untuk tindakan ini. Selain itu, referensi interseptor dari DefaultStack harus dikonfigurasi untuk tindakan ini seperti yang ditampilkan.
File konfigurasi struts.xml adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts.apacy.org/dtds/struts-2.3. value = "false" /> <constant name = "struts.devMode" value = "true" /> <package name = "default" namespace = " /" extends = "struts-default"> <!-file unggah-> <action name = "file_*" Method = "{1}"> <!-configure file-ref {1 {1 {1 name="fileUpload"> <!--Allowed file type--> <param name="allowedTypes">image/png,image/gif,image/jpeg</param> <!--Allowed file size--> <param name="maximumSize">2000</param> </interceptor-ref> <!--Configure system default interceptor--> <interceptor-ref name="defaultStack"/> <!--Configure input view Halaman-> <name result = "input">/web-inf/jsp/input.jsp </result> <result name = "page">/web-inf/jsp/fileupload.jsp </result> </cich> </packer> </struts>Interceptor unggahan file yang dikonfigurasi di atas mensyaratkan jenis unggahan file hanya dapat berupa file gambar, dan ukuran file tidak boleh lebih besar dari 2000 byte. Jika file yang diunggah terlalu besar atau jenisnya tidak cocok, itu akan melompat ke tampilan logis input.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.