Artikel ini membagikan kode implementasi spesifik untuk mengunggah dan mengunduh file Struts2 untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Unggah file
Unggah komponen file yang dikirimkan oleh Struts,
Meja Depan:
1) Posting metode pengiriman
2) Tipe Bentuk Multipart/Form-Data
3) Jenis Input = File
Backstage:
Komponen fileupload yang disediakan oleh Apache
Kategori Inti:
Pabrik FileitemFactory Fileitem
SERVLETFILEUPLOAD Core Class untuk mengunggah file di servlet
FileItem merangkum informasi dari item file formulir yang diunggah. Singkatnya, unggahan file lebih merepotkan untuk diproses.
Unggah File Struts <BR /> Interceptor Unggah File Membantu Kami Late Fungsi Upload File
<Interceptor name = "Fileupload"/>
unggah.xml
<struts> <package name = "unggah_" extends = "struts-default"> <!-note: Kata kunci "fileupload" tidak dapat digunakan dengan kata kunci "fileupload"-> <action name = "fileuploadaction"> <!-membatasi jenis file yang diunggah-> <interceptor-ref name = "DefaultStack"> Batasi <pare! name = "Fileupload.allowedExtensions"> txt, jpg, jar </param> <!-membatasi jenis file yang berjalan [digunakan pada saat yang sama seperti di atas, dapatkan persimpangan] <param name = "fileupload.allowedTypes"> Teks/Plain </param>-> </interceptor-ref> <alling name = "success"> success/success/Plain </param>-> </interceptor-ref-ref> <nements name = "success" name = "input">/e/error.jsp </result> </cich> </packing> </struts>
unggah.jsp
<body> <form action="${pageContext.request.contextPath }/fileUploadAction" method="post" enctype="multipart/form-data"> Username:<input type="text" name="userName"><br/> File:<input type="file" name="file1"><br/> <input type="submit" value="upload"> </form> </body>error.jsp
<body> error.jsp <br/> <!-Lihat semua pesan kesalahan yang dihasilkan oleh kerangka kerja struts selama runtime-> < %@ taglib uri = "/struts-tags" prefix = "s" %> <s: fielderror> </s: fielderror> </body> success.jsps.jsps.jsps.jsp </success </s: fielderror> </body> success.jsps.jsps.jsps.jsp </success </s: fielderror> </body> succect.jsps.jsps.jsps.jsp </success </suct
Kode inti
Fileupload .class
Kelas publik Fileupload memperluas ActionUpport {// formulir yang sesuai: <input type = "file" name = "file1"> file file private1; // Nama File Private String File1FileName; // Jenis File (MIME) Private String File1ContentType; public void setFile1 (file file1) {this.file1 = file1; } public void setFile1FileName (String File1FileName) {this.file1fileName = file1fileName; } public void setFile1ContentType (String File1ContentType) {this.file1contentType = file1contentType; } @Override Public String Execute () melempar Exception {/********* Dapatkan file yang diunggah dan prosesnya ******* /// Unggah file ke direktori unggahan // dapatkan jalur string direktori yang diunggah = servletActionContext.getServletContext (). GetRealPath ("/unggah"); // buat file objek file target destfile = file baru (path, file1fileName); // Salin file yang diunggah ke fileTil.copyfile target (file1, destfile); Sukses kembali; }} Detail pemrosesan unggahan file
A. Batas ukuran file
Upload file maksimum yang didukung oleh struct adalah 2m secara default, dan dimodifikasi oleh konstanta:
<!-4. Ubah ukuran maksimum file yang diunggah menjadi 30m->
<name konstan = "struts.multipart.maxsize" value = "31457280"/>
B. Batasi jenis file yang diunggah: Hanya pencegat file dengan sufiks TXT/JPG yang diizinkan: menyuntikkan parameter untuk membatasi jenis unggahan file
<!-Batasi jenis file yang diunggah-> <interceptor-ref name = "defaultStack"> <!-membatasi ekstensi file yang berjalan-> <param name = "fileupload.allowedextensions"> txt, jpg, get </param> <! name = "Fileupload.allowedTypes"> Teks/polos </param>-> </sterceptor-ref>
2. Unduh file
Unduh File Struts, 2 cara:
Metode 1: Tulis data aliran byte ke browser melalui objek respons; Atur metode header respons untuk unduh 2: Metode Struts
Unduh File Struts:
Salin kode sebagai berikut: <name tipe hasil = "stream"/>
Pertama, harap dicatat bahwa Anda membuat folder unggahan baru di direktori webroot dan letakkan file yang ingin Anda berikan ke folder yang diunduh.
unggah.xml
<action name = "down_*" method = "{1}"> <!-Daftar tampilan-> <name result = "list">/e/list.jsp </result> <!-unduh operasi-> <name hasil = "unduh" type = "stream"> <!-jenis file yang berjalan: ditentukan sebagai semua jenis file biner-<param name = "contentType> in contentType> Properti stream [sebenarnya getAttrinputStream ()]-> <param name = "inputName"> attrinputStream </param> <!-header unduhan, termasuk: nama file yang ditampilkan oleh browser-> <param name = "contentDisposition"> lampiran; FileName = $ {downFileName} </param> <! </hasilnya> </action>list.jsp
<body> <Table Align = "Center"> <tr> <td> Nomor </td> <td> Nama file </td> <td> Operasi </td> </td> < %@tglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "ce" {"{" coren = "coren =" coren = "coren" varStatus="vs"> <tr> <td>${vs.count }</td> <td>${fileName }</td> <td> <!-- Build a url --> <c:url var="url" value="down_down"> <c:param name="fileName" value="${fileName}"></c:param> </c:url> <a href = "$ {url}"> Unduh </a> </td> </tr> </c: foreach> </able> </body>Downaction
/***Unduh File*1. Tampilkan daftar semua file yang akan diunduh*2. Unduh File** /Download Public Class Extends Actionsupport { /***************** 1. Tunjukkan daftar semua file yang akan diunduh *************************/Daftar string publik () melempar Exception {// Dapatkan Path Path Direktori Unggah = ServletActionContext.GetSerVletContext (). GetRealPath ("/Upaya"); // File Objek Direktori File = File Baru (Path); // Dapatkan nama file semua file yang akan diunduh string [] fileNames = file.list (); // simpan actionContext ac = actionContext.getContext (); // Dapatkan peta yang mewakili permintaan (cara kedua) peta <string, object> request = (peta <string, object>) ac.get ("request"); request.put ("nama file", nama file); mengembalikan "daftar"; } /****************** 2. Unduh File ****************************/ // 1. Dapatkan nama file file yang akan diunduh Private String FileName; public void setFileName (string filename) {// menangani masalah dalam parameter yang diteruskan (dapatkan pengiriman) coba {filename = string baru (filename.getbytes ("iso8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) {lempar runtimeException baru (e); } // Tetapkan this.fileName = fileName; } // 2. Unduh metode bisnis yang dikirimkan (konfigurasikan stream di struts.xml) string publik ke bawah () melempar pengecualian {return "download"; } // 3. Metode untuk mengembalikan aliran file inputStream publik getAttrinputStream () {return servletActionContext.getSerVletContext (). GetResourceAsstream ("/unggah/" + nama file); } // 4. Unduh nama file yang ditampilkan (nama file yang ditampilkan oleh browser) string publik getDownFileName () {// Pengkodean Cina diperlukan coba {fileName = urlencoder.encode (nama file, "UTF-8"); } catch (UnsupportedEncodingException e) {lempar runtimeException baru (e); } mengembalikan nama file; }}Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.