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