บทความนี้ได้แชร์ฟังก์ชั่นดาวน์โหลดไฟล์ภายใต้ Struts2 สำหรับการอ้างอิงของคุณกับคุณ เนื้อหาเฉพาะมีดังนี้
นี่คือตัวอย่างของการใช้งานฟังก์ชั่นดาวน์โหลดรูปภาพ:
1. โครงสร้างโครงการ
2. web.xml
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.w3.org/200 XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-p_3_3_3 <Tilter-Name> struts 2 </tilter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter </filter-class> </ilter> <!-หน้ายินดีต้อนรับการตั้งค่า-> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <!-คำจำกัดความการหมดเวลาเซสชันหน่วยในนาที-> <session-config>
3. rownloadaction.java
แพ็คเกจ com.action; นำเข้า Java.io.InputStream; นำเข้า org.apache.struts2.servletactionContext; นำเข้า com.opensymphony.xwork2.actionsupport; การดาวน์โหลดคลาสสาธารณะขยายการกระทำ {ส่วนตัวคงที่สุดท้าย long serialversionuid = 1l; // พา ธ ไฟล์พา ธ สตริงส่วนตัว; // วิธีการ getter ของแอตทริบิวต์ PATH สาธารณะสตริง getPath () {กลับเส้นทาง; } // วิธีการตั้งค่าของแอตทริบิวต์พา ธ โมฆะสาธารณะ setPath (เส้นทางสตริง) {this.path = path; } // return InputStream วิธีการสำหรับการดาวน์โหลดไฟล์สาธารณะ java.io.InputStream getDownloadFile () พ่นข้อยกเว้น {inputStream ใน = servletActionContext.getServletContext (). getResourceasstream (getPath ()); กลับเข้า; } String สาธารณะ execute () โยนข้อยกเว้น {return success; -4.struts.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! Doctype struts สาธารณะ "-// Apache Software Foundation // DTD Struts การกำหนดค่า 2.1 // en" "http://struts.apache.org/dtds/struts-2.1.dtd" name = "struts.i18n.encoding" value = "UTF-8" /> <!-กำหนดค่าความจุสูงสุดของไฟล์ที่อัปโหลด, struts2 คือ 2m โดยค่าเริ่มต้น หน่วยคือ 1b, 1kb = 1024b, 1m = 1024kb, 1m = 1024*1024b-> <ชื่อคงที่ = "struts.multipart.maxsize" value = "1048576" /> <!-กำหนดค่าแพคเกจในแอปพลิเคชันนี้ Extends = "struts-default"> <action name = "ดาวน์โหลด"> <!-ตั้งค่าพารามิเตอร์ของพา ธ ไฟล์และส่งผ่านไปยังไฟล์คลาสแอ็คชั่น-> <!-<param name = "path">/download/a.jpg </param>-> <! name = "contentType"> image/jpeg </param> <!-ดาวน์โหลดวิธีการประมวลผลไฟล์-> <param name = "contentDisposition"> <!-ไฟล์แนบหมายถึงไฟล์แนบนั่นคือหน้าต่างโต้ตอบบันทึกจะถูกเปิดในระหว่างการดาวน์โหลดและชื่อไฟล์แสดงชื่อไฟล์ที่แสดงในระหว่างการดาวน์โหลด-> <! หรือเขียนแบบอินไลน์ มันหมายถึงอินไลน์นั่นคือคุณจะพยายามเปิดไฟล์ที่ดาวน์โหลดในเบราว์เซอร์แทนที่จะดาวน์โหลด-> ไฟล์แนบ; filename = "A.jpg" </param> <!-คำจำกัดความสตรีมเอาต์พุตไฟล์-> <!-ค่าที่สอดคล้องกับองค์ประกอบอินพุตที่นี่คือดาวน์โหลดไฟล์ ในการดำเนินการคุณต้องมีเมธอด getDownloadFile () ที่สอดคล้องกัน-> <param name = "inputName"> downloadFile </param> <!-ดาวน์โหลดขนาดบัฟเฟอร์-> <param name = "buffersize"> 1024 </param>
5.index.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "home onfollow" home> href = "download.action? path = < %=" rel = "external nofollow" ./download/a.jpg " %>"> ดาวน์โหลด </a> </center> </body> </html>
6. เส้นทางไฟล์
ไดเรกทอรีดาวน์โหลดควรถูกสร้างขึ้นล่วงหน้าในโครงการและควรมีไฟล์ A.JPG อยู่ภายในมิฉะนั้นการดาวน์โหลดจะล้มเหลว
7. พอร์ทัลการทำงาน
หลังจากโครงการถูกเผยแพร่ไปยังเซิร์ฟเวอร์ให้ใช้เบราว์เซอร์เพื่อเข้าถึง index.jsp ในโครงการคลิกลิงก์ดาวน์โหลดและกล่องโต้ตอบ "ดาวน์โหลด" จะปรากฏขึ้น