ดาวน์โหลดไฟล์ด้วย URL จากเซิร์ฟเวอร์ผ่าน APEX
ฉันกำลังพยายามสร้างฟังก์ชันที่ดาวน์โหลดไฟล์ที่อยู่บนเซิร์ฟเวอร์ด้วย URL ฉันมี APEX ที่ทำงานบน Tomcat 9 บนเซิร์ฟเวอร์มีเส้นทาง / โฟลเดอร์ / ไฟล์ที่มีไฟล์ที่ฉันต้องการดาวน์โหลดด้วย url ฉันพบว่าตัวอย่างเช่นฉันสามารถดาวน์โหลดไฟล์จาก / i / โฟลเดอร์ด้วย URL easilly ด้วยตัวอย่างเช่น http: // {host}: {port} /i/css/apex.css ฉันพยายามสร้างทางลัดไปยัง / โฟลเดอร์ / ไฟล์ในโฟลเดอร์นั้น ตอนนี้มีเส้นทาง. / i/files/. เมื่อฉันพิมพ์ http: // {host}: {port} /i/files/file1.pdf ฉันจะได้รับ 404
ฉันจะจัดการสิ่งนี้ได้อย่างไรหรือมีวิธีที่ดีกว่านี้หรือไม่
คำตอบ
APEX ไม่ได้ออกแบบมาเพื่อให้บริการไฟล์แบบคงที่ในลักษณะนั้น โครงสร้างไดเร็กทอรี / i / ถูกกำหนดไว้ล่วงหน้าและไม่จำเป็นต้องชี้ไปที่ตำแหน่งทางกายภาพบนเซิร์ฟเวอร์อย่างที่คุณคิด ทางออกที่ดีที่สุดของคุณคือวางไฟล์ที่กำหนดเองไว้บนเว็บเซิร์ฟเวอร์แยกต่างหาก (เช่นหลายคนใช้ reverse proxy หน้า Tomcat) และโหลดจากที่นั่นด้วย URL คงที่ "ปกติ"
ฉันพบวิธีแก้ปัญหาของซิมเปิล เพียงเพิ่มในบรรทัด server.xml
<Context docBase="/folder/files" path="/files"/>
ตอนนี้คุณต้องจำไว้ว่าผู้ใช้มีสิทธิ์ในการอ่าน / ดำเนินการ / ค้นหาจากเส้นทางนี้ (เจ้าของคนเดียวกันหรือสิทธิพิเศษสำหรับกลุ่มหรือคนอื่น ๆ ) ตอนนี้ฉันสามารถใช้ url ใน APEX ได้อย่างง่ายดาย (http: // {host}: {port} /files/file1.pdf)