📁

ระบบอัปโหลดไฟล์

อัปโหลดไฟล์อย่างปลอดภัยจากผู้ใช้ถึง Cloud Storage รูปโปรไฟล์ เอกสาร รูปสินค้า และอื่นๆ

🔄 โฟลการทำงานระบบอัปโหลดไฟล์

👤ผู้ใช้เลือกไฟล์🌐หน้าเว็บตรวจสอบไฟล์⚙️API Serverตรวจสิทธิ์🔐ล้างไฟล์สแกนไวรัส☁️จัดเก็บS3/GCS/CDN🗄️Databaseบันทึก URL/meta✅ ไฟล์ถูกเก็บอย่างปลอดภัย → ส่ง CDN URL กลับให้ Frontend

📋 ขั้นตอนการทำงานโดยละเอียด

1
👆ผู้ใช้
คลิก Upload → เลือกไฟล์ผ่าน file picker หรือ drag & drop
2
🌐Frontend
ตรวจสอบ: ประเภทไฟล์ (MIME type), ขนาดไฟล์, ขนาดภาพ (สำหรับรูป)
3
📤Frontend
แสดง Progress bar → ส่งไฟล์ผ่าน multipart/form-data ไปยัง API
4
⚙️API Server
ตรวจสอบสิทธิ์ผู้ใช้ (JWT) → เช็คว่ามีสิทธิ์ Upload ไหม
5
🔐API Server
ล้างชื่อไฟล์ → ลบอักขระอันตราย → สร้างชื่อ unique (UUID)
6
🦠API Server
สแกนไวรัสด้วย ClamAV / บริการภายนอก (optional แต่แนะนำ)
7
☁️Storage
อัปโหลดไปยัง S3 / Google Cloud Storage / Cloudinary พร้อมกำหนดสิทธิ์ (public/private)
8
🔗Storage
สร้าง CDN URL หรือ Signed URL (สำหรับไฟล์ private มีวันหมดอายุ)
9
🗄️Database
บันทึกข้อมูลไฟล์: filename, original_name, size, mime_type, url, uploader_id
10
Frontend
รับ URL ไฟล์ → แสดง Preview → เชื่อมกับข้อมูล (รูปโปรไฟล์ เอกสาร รูปสินค้า)

☁️ ตัวเลือก Storage

🟠

Amazon S3

มาตรฐานอุตสาหกรรม เก็บข้อมูลได้ไม่จำกัด Durability 99.999999999% ใช้ร่วมกับ CloudFront CDN

✅ เหมาะกับ: Enterprise, Traffic สูง
🔵

Google Cloud Storage

เข้ากันดีกับ Firebase รวมกับ Google Service ต่างๆ มีความสามารถ ML ที่แข็งแกร่ง

✅ เหมาะกับ: แอป Firebase, โปรเจกต์ GCP
🟣

Cloudinary

เชี่ยวชาญรูปภาพ/วิดีโอ ปรับขนาด บีบอัด แปลงฟอร์แมต ตัดรูปด้วย AI อัตโนมัติ

✅ เหมาะกับ: แอปที่มีสื่อมาก, E-commerce
🟢

Supabase Storage

ทางเลือก Open-source แทน Firebase มี RLS Policy ในตัว เชื่อมกับ PostgreSQL

✅ เหมาะกับ: Startup, โปรเจกต์ Open-source
🖥️

Local Server

ง่ายสำหรับโปรเจกต์เล็ก ไม่มี Redundancy ใช้ Nginx ให้บริการไฟล์

✅ เหมาะกับ: ระบบภายในขนาดเล็ก, MVP
🐰

Bunny CDN

CDN ราคาประหยัดพร้อม Storage ประสิทธิภาพดีในเอเชีย คุ้มค่าสำหรับโปรเจกต์ไทย

✅ เหมาะกับ: Startup ไทย, งบประมาณจำกัด

🛡️ แนวทางความปลอดภัยการอัปโหลด

🔍
ตรวจ MIME Type

อย่าเชื่อ file extension ตรวจสอบ MIME type จริงด้วย library เช่น file-type

📝
เปลี่ยนชื่อไฟล์

สร้างชื่อ UUID แทน อย่าใช้ชื่อไฟล์เดิมเพื่อป้องกัน Path Traversal attack

🔑
Signed URLs

สำหรับไฟล์ Private สร้าง URL ที่มีวันหมดอายุแทนการเปิดสาธารณะ

📏
จำกัดขนาดไฟล์

ตั้งค่าจำกัดขนาดฝั่ง Server ป้องกัน DoS จากการ Upload ไฟล์ขนาดใหญ่

📁
เก็บนอก Web Root

อย่าเก็บไฟล์ใน Directory สาธารณะ ให้เสิร์ฟผ่าน API พร้อมตรวจสิทธิ์

🦠
สแกนไวรัส

เชื่อมกับ ClamAV หรือ VirusTotal API เพื่อสแกนไฟล์ก่อนเก็บ

ต้องการระบบอัปโหลดไฟล์ที่ปลอดภัย? 📁

เราสร้างระบบจัดการไฟล์พร้อม Cloud Storage, CDN และมาตรฐานความปลอดภัย

← กลับหน้าเรียนติดต่อเรา