Files
lcbp3/specs/01-requirements/03.10-file-handling.md
2025-11-30 13:58:46 +07:00

2.3 KiB

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 ทุกครั้งที่มีการดาวน์โหลดไฟล์สำคัญ