# 3.10 File Handling Management (การจัดการไฟล์) --- title: 'Functional Requirements: File Handling Management' version: 1.5.0 status: first-draft owner: Nattanin Peancharoen last_updated: 2025-11-30 related: - specs/01-requirements/01-objectives.md - specs/01-requirements/02-architecture.md - specs/01-requirements/03-functional-requirements.md --- ## 3.10.1 Two-Phase Storage Strategy: 1. Phase 1 (Upload): ไฟล์ถูกอัปโหลดเข้าโฟลเดอร์ temp/ และได้รับ temp_id 2. Phase 2 (Commit): เมื่อ User กด Submit ฟอร์มสำเร็จ ระบบจะย้ายไฟล์จาก temp/ ไปยัง permanent/{YYYY}/{MM}/ และบันทึกลง Database ภายใน Transaction เดียวกัน 3. Cleanup: มี Cron Job ลบไฟล์ใน temp/ ที่ค้างเกิน 24 ชม. (Orphan Files) ## 3.10.2 Security: - Virus Scan (ClamAV) ก่อนย้ายเข้า permanent - Whitelist File Types: PDF, DWG, DOCX, XLSX, ZIP - Max Size: 50MB - Access Control: ตรวจสอบสิทธิ์ผ่าน Junction Table ก่อนให้ Download Link ## 3.10.3 ความปลอดภัยของการจัดเก็บไฟล์: - ต้องมีการ scan virus สำหรับไฟล์ที่อัปโหลดทั้งหมด โดยใช้ ClamAV หรือบริการ third-party - จำกัดประเภทไฟล์ที่อนุญาต: PDF, DWG, DOCX, XLSX, ZIP (ต้องระบุรายการที่ชัดเจน) - ขนาดไฟล์สูงสุด: 50MB ต่อไฟล์ - ไฟล์ต้องถูกเก็บนอก web root และเข้าถึงได้ผ่าน authenticated endpoint เท่านั้น - ต้องมี file integrity check (checksum) เพื่อป้องกันการแก้ไขไฟล์ - Download links ต้องมี expiration time (default: 24 ชั่วโมง) - ต้องบันทึก audit log ทุกครั้งที่มีการดาวน์โหลดไฟล์สำคัญ