วิดีโอและคำบรรยาย · ตัวดาวน์โหลดสื่อโดยตรง
ที่มาของชื่อไฟล์ที่ดาวน์โหลด: URL path vs Content-Disposition
· มันทำงานอย่างไร
http ดาวน์โหลด สื่อ
อธิบายว่าเบราว์เซอร์ตัดสินใจว่าจะเรียกไฟล์ที่บันทึกไว้อย่างไร: ส่วนสุดท้ายของ URL ส่วนหัว Content-Disposition ของเซิร์ฟเวอร์ และแอตทริบิวต์การดาวน์โหลดที่เครื่องมือสามารถตั้งค่าได้ แสดงให้เห็นว่าเหตุใดการล้างข้อมูล URL ในบางครั้งยังคงให้ชื่อไฟล์ที่ไม่ถูกต้อง
ไฟล์ถูกบันทึกเป็น 'file.php' และจะไม่เปิดขึ้น — ปัญหาการตั้งชื่อที่ลิงก์โดยตรงสามารถซ่อนได้
URL ที่ลงท้ายด้วย `file.php?id=42` สามารถส่งไบต์ของวิดีโอในขณะที่ออกจากเบราว์เซอร์ด้วยชื่อเส้นทางที่ไม่เป็นประโยชน์ ในทางกลับกัน ที่อยู่ที่ลงท้ายด้วย `.mp4` สามารถส่งคืน HTML ได้ ชื่อไฟล์คือป้ายกำกับที่เลือกจากเมตาดาต้าคำขอและการตอบกลับ ไม่ใช่ข้อพิสูจน์เกี่ยวกับเพย์โหลดภายใน
Direct Media Downloader จะคำนวณชื่อที่แนะนำเฉพาะเมื่อมีการตอบกลับ GET ที่สำเร็จเท่านั้น โดยจะตรวจสอบการจัดการเนื้อหาก่อน จากนั้นจึงตรวจสอบส่วนเส้นทางที่ไม่ว่างเปล่าสุดท้าย จากนั้นจึงตรวจสอบทางเลือกสำรองตาม MIME ขนาดเล็ก ลำดับนี้แคบกว่าและคาดเดาได้ง่ายกว่าการอ้างว่าเบราว์เซอร์ดำเนินการเจรจาแบบสากล การแยกนี้จะป้องกันไม่ให้เนื้อหาการอนุญาตชั่วคราวรั่วไหลไปยังชื่อดิสก์ และหลีกเลี่ยงอักขระชื่อไฟล์ที่ผิดกฎหมายซึ่งเกิดจากสตริงการสืบค้นทั้งหมด
ส่วนเส้นทางสุดท้าย: การคาดเดาเริ่มต้น — วิธีที่เบราว์เซอร์อ่านชื่อไฟล์จาก URL และตำแหน่งที่สตริงการสืบค้นสับสน
ผู้สมัครเส้นทางคือส่วนสุดท้ายหลังจากแยกเครื่องหมายทับ ถอดรหัสจากการเข้ารหัสเปอร์เซ็นต์ ไม่รวมพารามิเตอร์การค้นหาเนื่องจาก URL API จัดเก็บแยกกัน ดังนั้น `/episodes/launch.mp3?token=...` ให้ผล `launch.mp3` ในขณะที่เครื่องหมายทับต่อท้ายไม่มีส่วนสุดท้ายและต้องการแหล่งที่มาอื่น
กฎเส้นทางนี้ไม่ได้ตัดสินว่าส่วนขยายนั้นซื่อสัตย์หรือไม่ เส้นทางการจัดส่งที่เซ็นชื่อสามารถซ่อนชื่อบุคคลในพารามิเตอร์ได้ และการใช้งานนี้จะไม่ขุดคีย์คิวรีที่กำหนดเองสำหรับชื่อ ข้อจำกัดดังกล่าวช่วยหลีกเลี่ยงความผิดพลาดในส่วนประกอบลายเซ็น มูลค่าแคมเปญ หรือตัวระบุบันทึกสำหรับชื่อไฟล์ เมื่อทั้งสองรูปแบบมีอยู่ รูปแบบที่เป็นสากลสามารถรักษาชื่อที่ไม่ใช่ ASCII ได้ชัดเจนยิ่งขึ้น ในขณะที่ทางเลือกสำรองจะจัดการกับการใช้งานเซิร์ฟเวอร์ที่ง่ายกว่า
การจัดการเนื้อหา: คำแนะนำของเซิร์ฟเวอร์ — ส่วนหัวสามารถแทนที่ชื่อของ URL ได้อย่างไร และเหตุใด CDN บางตัวจึงตั้งค่าไว้และบางตัวไม่ตั้งค่าดังกล่าว
การจัดการเนื้อหาอาจมีคำแนะนำ `filename=` ธรรมดาหรือแบบฟอร์ม UTF-8 `filename*=` ที่เข้ารหัส ToolAcre ให้ความสำคัญกับรูปแบบดาวที่เข้ารหัสและพยายามถอดรหัสเปอร์เซ็นต์ หากการถอดรหัสล้มเหลว จะตกอยู่ในรูปแบบธรรมดาและจากนั้นไปที่ลอจิกของเส้นทาง แทนที่จะทำให้การถ่ายโอนเสร็จสมบูรณ์เสียหาย
ส่วนหัวเป็นเพียงคำแนะนำของเจ้าภาพที่ให้บริการเท่านั้น รหัสแอปพลิเคชันไม่ได้ตรวจสอบข้อมูลเมตาของสื่อเพื่อตรวจสอบ และเซิร์ฟเวอร์ที่ทำให้เข้าใจผิดสามารถให้ชื่อที่ทำให้เข้าใจผิดได้ ตรวจสอบอักขระและนามสกุลที่ผิดปกติก่อนเปิดไฟล์ โดยเฉพาะอย่างยิ่งเมื่อโฮสต์ต้นทางไม่คุ้นเคย URL ของออบเจ็กต์เป็นการอ้างอิงเบราว์เซอร์ชั่วคราว ไม่ใช่ที่อยู่ระยะไกล และการใช้งานไม่ได้สร้างการอัปโหลดหรือคำขอ HTTP สำหรับเนื้อหาสื่ออีก
แอตทริบิวต์การดาวน์โหลด: เครื่องมือใดที่สามารถตั้งค่าตัวเองได้ — วิธีที่ผู้ดาวน์โหลดฝั่งเบราว์เซอร์สามารถเลือกชื่อสำหรับ Blob ที่บันทึกไว้
หลังจากที่ Blob พร้อมแล้ว UI จะส่งทั้ง Blob และชื่อไฟล์ที่เลือกไปยังยูทิลิตีการดาวน์โหลดที่ใช้ร่วมกัน ยูทิลิตี้ดังกล่าวจะทริกเกอร์พฤติกรรมการบันทึกของเบราว์เซอร์ด้วยออบเจ็กต์ URL และชื่อการดาวน์โหลด ส่วนหัวของเซิร์ฟเวอร์จะไม่ได้รับการพิจารณาอีกต่อไปเมื่อคลิกสุดท้ายนั้น เนื่องจากคำแนะนำได้รับการแก้ไขแล้ว
กลไกนี้จะไม่เปลี่ยนชื่อไฟล์ในดิสก์ที่มีอยู่หรือเลือกโฟลเดอร์ การตั้งค่าเบราว์เซอร์ยังคงกำหนดว่ากล่องโต้ตอบจะปรากฏขึ้นหรือไม่ และวิธีจัดการชื่อที่ซ้ำกัน ToolAcre จัดหาผู้สมัครหนึ่งคน เบราว์เซอร์และผู้เยี่ยมชมยังคงรับผิดชอบต่อผลลัพธ์ของระบบไฟล์ขั้นสุดท้าย ผู้ใช้ควรต่อต้าน "การแก้ไข" ความไม่ตรงกันด้วยการเปลี่ยนชื่อเพียงอย่างเดียว ตรวจสอบคอนเทนเนอร์และตัวแปลงสัญญาณจริงก่อนที่จะตัดสินใจว่าข้อมูลเมตาหรือเนื้อหาจำเป็นต้องแก้ไขหรือไม่
ส่วนขยายและประเภท MIME: ทำให้สอดคล้องกัน — ทำไมไฟล์ชื่อ .mp4 ซึ่งเป็น WebM จริงๆ ทำให้ผู้เล่นสับสน
ชื่อ `.mp4` ที่จับคู่กับ `video/webm` สามารถสร้างความสับสนให้กับซอฟต์แวร์ที่กำหนดเส้นทางตามส่วนขยาย แม้ว่าผู้เล่นที่มีความสามารถอาจตรวจสอบไบต์ก็ตาม ToolAcre รักษาเส้นทางหรือชื่อส่วนหัวแทนที่จะเขียนส่วนขยายใหม่เพื่อให้ตรงกับประเภทเนื้อหา นอกจากนี้ยังรักษาค่าเซิร์ฟเวอร์ MIME บน Blob
หากไม่มีส่วนหัวและไม่มีส่วนของเส้นทาง ทางเลือกจะจดจำประเภทเนื้อหาที่มี WebM หรือ MP4 และส่งคืน `download.webm` หรือ `download.mp4`; ประเภทอื่น ๆ จะกลายเป็น `download.bin` ขณะนี้ค่าเสียง MIME ยังไม่ได้รับส่วนขยายพิเศษผ่านสาขาสุดท้ายนี้ หากลายเซ็นหมดอายุระหว่าง HEAD ถึง GET ชื่อไฟล์จะไม่ชนะเนื่องจากการร้องขอเนื้อหาล้มเหลว การตั้งชื่อจะเริ่มต้นหลังจากการตอบกลับที่อ่านได้สำเร็จเท่านั้น
ตัวอย่างการทำงาน: ลิงก์ CDN ที่ลงชื่อแล้วหนึ่งลิงก์ และชื่อไฟล์ที่เป็นไปได้สามชื่อ — พิจารณาดูว่าชื่อใดชนะและเพราะเหตุใด
ใช้ที่อยู่ CDN ที่ลงนามซึ่งมีเส้นทางสิ้นสุดใน `asset` ซึ่งการตอบกลับระบุว่า `filename*=UTF-8''approved%20cut.mp4` และประเภทคือ `video/mp4` ส่วนหัวที่เข้ารหัสจะชนะ โดยสร้าง `approved cut.mp4` ลบส่วนหัวและเส้นทางให้ผล `asset`; ลบส่วนนั้นออกด้วยและ MIME ทางเลือกสำรองจะให้ผล `download.mp4`
`filename="review.webm"` แบบธรรมดาจะชนะเมื่อไม่มีค่าดาวที่ใช้งานได้ แม้ว่าเส้นทางจะระบุว่า `clip.mp4` ก็ตาม ตัวอย่างแสดงลำดับความสำคัญ ไม่ใช่การตรวจสอบความถูกต้อง การตรวจสอบประเภทเนื้อหาและการเปิดผลลัพธ์ที่บันทึกไว้ในซอฟต์แวร์ที่เชื่อถือได้ยังคงเป็นการตรวจสอบแยกต่างหากหลังจากเลือกชื่อแล้ว แค็ตตาล็อกสามารถบันทึกเช็คซัมเพิ่มเติมได้หลังจากบันทึก แต่การแฮชอยู่นอกตัวดาวน์โหลดนี้ และไม่ควรบอกเป็นนัยถึงจำนวนไบต์ที่แสดง
สิ่งนี้ไม่ครอบคลุมถึง การเปลี่ยนชื่อหลังจากดาวน์โหลด การตั้งชื่อแบทช์ หรือการอ่านข้อมูลเมตาภายในไฟล์เพื่อตั้งชื่อ
โปรแกรมดาวน์โหลดจะไม่ใช้ไฟล์หมายเลขแบตช์ อ่านแท็กชื่อจากคอนเทนเนอร์สื่อ ทำความสะอาดแค็ตตาล็อกที่เก็บถาวร หรือซ่อมแซมส่วนขยายที่ทำให้เข้าใจผิดหลังจากบันทึก นอกจากนี้ยังไม่สามารถรับประกันได้ว่ารูปแบบไวยากรณ์การจัดการเนื้อหาทุกรูปแบบจะตรงกับนิพจน์ทั่วไปที่เน้นไว้
การเปลี่ยนชื่อในภายหลังถือเป็นงานของระบบปฏิบัติการ หากการตั้งชื่อไฟล์เก็บถาวรมีความสำคัญ ให้บันทึกแหล่งที่มา URL ประเภทการตอบกลับ จำนวนไบต์ และชื่อที่สื่อความหมายที่ได้รับอนุมัติในแค็ตตาล็อกของคุณเอง อย่าถือว่าส่วนหัวที่สะดวกเป็นที่มาหรือนามสกุลไฟล์เป็นข้อมูลประจำตัวในการเข้ารหัส การเข้ารหัสเปอร์เซ็นต์ที่มีรูปแบบไม่ถูกต้องในเส้นทางเป็นปัญหาคุณภาพโฮสต์อีกประการหนึ่ง ทางเลือกปัจจุบันไม่ได้อ้างว่าจะฆ่าเชื้อทุกชื่อที่เซิร์ฟเวอร์ให้ไว้ในกฎของทุกระบบปฏิบัติการ
ประเด็นสำคัญ: ชื่อนี้เป็นการเจรจาระหว่าง URL ส่วนหัวและเครื่องมือ — สิ่งที่ต้องตรวจสอบในชื่อและนามสกุลไฟล์ที่บันทึกไว้หลังจากใช้ Direct Media Downloader
ลำดับความสำคัญที่นำมาใช้นั้นเป็นรูปธรรม: ชื่อไฟล์ดาวที่ถูกต้อง UTF-8 ชื่อไฟล์ธรรมดา ถอดรหัสส่วนของเส้นทางสุดท้าย จากนั้น `download.webm`, `download.mp4` หรือ `download.bin` สตริงการสืบค้นสามารถอนุญาตการจัดส่งโดยไม่ต้องเป็นส่วนหนึ่งของชื่อที่บันทึกไว้ สิ่งนี้อธิบายเรื่องน่าประหลาดใจมากมายเกี่ยวกับ "การดาวน์โหลด" และ "ดัชนี"
หลังจากใช้ Direct Media Downloader แล้ว ให้เปรียบเทียบชื่อ นามสกุล ประเภทเนื้อหา แหล่งที่มาที่คาดหวัง และความสามารถในการเล่นจริง ข้อสังเกตเหล่านี้ตอบคำถามที่แตกต่างกัน ชื่อไฟล์ที่ชัดเจนช่วยปรับปรุงการจัดการ แต่มีเพียงไบต์ของโฮสต์และแอปพลิเคชันที่ได้รับเท่านั้นที่จะกำหนดว่าไฟล์นั้นประกอบด้วยอะไรอย่างแท้จริง การเลือกชื่อไฟล์ช่วยปรับปรุงการใช้งาน ในขณะที่แหล่งที่มายังคงมาจากแหล่งที่ได้รับอนุญาต คำขอที่บันทึกไว้ และการตรวจสอบไบต์ที่เสร็จสมบูรณ์โดยอิสระ