การลากไฟล์เข้าสู่หน้า
จัดการไฟล์ที่ลากมาจากเดสก์ท็อปแล้ววางลง
การลากไฟล์เข้าสู่หน้า เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไฟล์จากเดสก์ท็อป
นอกเหนือจากการย้ายองค์ประกอบแล้ว ส่วนติดต่อการเขียนโปรแกรมการลากและวางยังให้ผู้ใช้ลากไฟล์จากระบบปฏิบัติการเข้ามาในหน้าเว็บของคุณได้ ซึ่งเป็นพื้นฐานของเขตวางเพื่ออัปโหลด
การรับไฟล์ที่วาง
การตั้งค่าจะคล้ายกับการวางองค์ประกอบ คือป้องกันการทำงานเริ่มต้นใน dragover และ drop ความแตกต่างคือการอ่านไฟล์แทนที่จะใช้ getData
dropzone.addEventListener("dragover", (e) => e.preventDefault());dataTransfer.files
เมื่อวางแล้ว e.dataTransfer.files จะเป็น FileList ที่ประกอบด้วยอ็อบเจ็กต์ File ที่ถูกวาง
dropzone.addEventListener("drop", (e) => {
e.preventDefault();
const files = e.dataTransfer.files;
console.log(files.length, "file(s) dropped");
});การวนซ้ำผ่านไฟล์
FileList มีลักษณะคล้ายอาร์เรย์ แปลงด้วยตัวดำเนินการกระจาย เพื่อวนซ้ำด้วยเมธอดของอาร์เรย์
const files = [...e.dataTransfer.files];
files.forEach((file) => {
console.log(file.name, file.size, file.type);
});ข้อมูลเมทาดาทาของไฟล์
แต่ละ File จะแสดง name, size (หน่วยเป็นไบต์), type (MIME) และ lastModified โดยไม่ต้องอ่านเนื้อหาของไฟล์
console.log(file.name); // "photo.png"
console.log(file.type); // "image/png"
console.log(file.size); // 20481การกรองตามประเภท
ตรวจสอบไฟล์ที่วางก่อนประมวลผล เช่น ยอมรับเฉพาะรูปภาพ
const images = files.filter((f) => f.type.startsWith("image/"));
if (images.length === 0) console.log("No images dropped");การอ่านเนื้อหาไฟล์
ใช้ FileReader เพื่ออ่านไฟล์ ใช้ readAsText สำหรับข้อความ และ readAsDataURL สำหรับภาพตัวอย่าง
const reader = new FileReader();
reader.onload = () => console.log(reader.result);
reader.readAsText(file);การแสดงตัวอย่างรูปภาพที่วาง
URL.createObjectURL(file) จะให้ที่อยู่สำหรับแสดงตัวอย่างได้ทันทีโดยไม่ต้องอ่านไฟล์ทั้งหมด เมื่อใช้งานเสร็จแล้วให้เพิกถอนที่อยู่นั้นเพื่อคืนหน่วยความจำ
const url = URL.createObjectURL(file);
img.src = url;
img.onload = () => URL.revokeObjectURL(url);รายการเทียบกับไฟล์
dataTransfer.items มีข้อมูลมากกว่า files โดยแต่ละ DataTransferItem จะแจ้ง kind ("file" หรือ "string") และสามารถให้ไฟล์หรือรายการไดเรกทอรีได้
for (const item of e.dataTransfer.items) {
if (item.kind === "file") {
const file = item.getAsFile();
console.log(file.name);
}
}การอัปโหลดไฟล์ที่วาง
ห่อหุ้มไฟล์ด้วย FormData แล้วส่งด้วย POST ไปยังเซิร์ฟเวอร์ของคุณ
const form = new FormData();
files.forEach((f) => form.append("files", f));
fetch("/upload", { method: "POST", body: form });การป้องกันการนำทางโดยไม่ตั้งใจ
หากวางไฟล์นอกเขตวาง เบราว์เซอร์จะนำทางไปยังไฟล์นั้น ให้ป้องกันทั้งเอกสารเพื่อหยุดการทำงานดังกล่าว
window.addEventListener("dragover", (e) => e.preventDefault());
window.addEventListener("drop", (e) => e.preventDefault());ตรวจสอบสั้น ๆ
ทดสอบการวางไฟล์
สรุป: การลากไฟล์เข้ามา
คุณสร้างเขตวางไฟล์ อ่าน dataTransfer.files ตรวจสอบเมทาดาทา กรองตามประเภท แสดงตัวอย่างรูปภาพด้วยที่อยู่ของอ็อบเจ็กต์ ใช้ FileReader อัปโหลดด้วย FormData และป้องกันการนำทางโดยไม่ตั้งใจ บทเรียนการลากและวางเสร็จสมบูรณ์แล้ว
คำถามที่พบบ่อย
บทเรียน “การลากไฟล์เข้าสู่หน้า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การลากไฟล์เข้าสู่หน้า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การลากไฟล์เข้าสู่หน้า”
จัดการไฟล์ที่ลากมาจากเดสก์ท็อปแล้ววางลง คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การลากไฟล์เข้าสู่หน้า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม
ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทำให้องค์ประกอบลากได้
- เป้าหมายการวางและ dataTransfer
- การตอบสนองด้วยภาพระหว่างลาก
- การลากไฟล์เข้าสู่หน้า