# ফাইল আপলোড সিস্টেম

স্কুল ম্যানেজমেন্ট সিস্টেমে শিক্ষার্থী ও শিক্ষকদের জন্য একটি সম্পূর্ণ ফাইল আপলোড ও ব্যবস্থাপনা সিস্টেম যোগ করা হয়েছে।

## ✅ সম্পন্ন ফিচারসমূহ

### 🗄️ ডাটাবেস স্ট্রাকচার
- **file_uploads** টেবিল - সব আপলোডকৃত ফাইলের তথ্য
- **assignments** টেবিল - শিক্ষকদের অ্যাসাইনমেন্ট
- **assignment_submissions** টেবিল - ছাত্রদের অ্যাসাইনমেন্ট জমা

### 📁 ফাইল ব্যবস্থাপনা
- **আপলোড সিস্টেম** (`uploads/upload.php`)
  - ড্র্যাগ এন্ড ড্রপ সাপোর্ট
  - ফাইল টাইপ ভ্যালিডেশন
  - সাইজ লিমিট (১০MB)
  - রিয়েল-টাইম ফাইল ইনফো প্রিভিউ

- **ফাইল তালিকা** (`uploads/my_files.php`)
  - পেজিনেশন সহ
  - সার্চ ও ফিল্টার অপশন
  - ক্যাটেগরি অনুযায়ী ফিল্টার

- **ডাউনলোড সিস্টেম** (`uploads/download.php`)
  - পারমিশন চেক
  - সিকিউর ডাউনলোড

### 👨‍🎓 ছাত্রদের জন্য ফিচার
- নিজের ফাইল আপলোড করতে পারে
- শিক্ষকদের পাবলিক ফাইল দেখতে ও ডাউনলোড করতে পারে
- ক্লাস অনুযায়ী ফিল্টার করা ফাইল দেখতে পায়
- অ্যাসাইনমেন্ট জমা দিতে পারে

### 👨‍🏫 শিক্ষকদের জন্য ফিচার
- ফাইল আপলোড ও ব্যবস্থাপনা
- পাবলিক/প্রাইভেট ফাইল সেটিং
- নির্দিষ্ট ক্লাস ও বিষয়ের জন্য ফাইল টার্গেট করা
- অ্যাসাইনমেন্ট তৈরি ও ব্যবস্থাপনা
- ছাত্রদের জমাকৃত অ্যাসাইনমেন্ট দেখা ও গ্রেড দেওয়া

## 🔧 সেটআপ নির্দেশনা

### ১. ডাটাবেস সেটআপ
```
http://localhost/bidda/create_upload_tables.php
```

### ২. ডিরেক্টরি পারমিশন
নিশ্চিত করুন যে নিম্নলিখিত ডিরেক্টরিগুলো writable:
- `uploads/students/`
- `uploads/teachers/`
- `uploads/assignments/`
- `uploads/documents/`

### ৩. ফাইল সাইজ লিমিট
PHP কনফিগারেশনে নিম্নলিখিত সেটিংস চেক করুন:
```ini
upload_max_filesize = 10M
post_max_size = 12M
max_execution_time = 300
```

## 📋 ব্যবহারের নির্দেশনা

### শিক্ষকদের জন্য:
1. **ফাইল আপলোড**: `uploads/upload.php`
2. **পাবলিক ফাইল**: চেকবক্স টিক দিয়ে ছাত্রদের জন্য দৃশ্যমান করুন
3. **টার্গেট সেট**: নির্দিষ্ট ক্লাস ও বিষয় নির্বাচন করুন
4. **অ্যাসাইনমেন্ট**: `uploads/assignments.php` থেকে তৈরি করুন

### ছাত্রদের জন্য:
1. **ফাইল আপলোড**: `uploads/upload.php`
2. **শিক্ষকের ফাইল**: হোম পেজে পাবলিক ফাইল দেখুন
3. **অ্যাসাইনমেন্ট**: `uploads/assignments_student.php` থেকে জমা দিন

## 🔒 নিরাপত্তা ফিচার

### ফাইল ভ্যালিডেশন
- সমর্থিত ফরম্যাট: PDF, DOC, DOCX, JPG, PNG, GIF, MP4, AVI, TXT
- সর্বোচ্চ সাইজ: ১০MB
- ম্যালিসিয়াস ফাইল প্রতিরোধ

### অ্যাক্সেস কন্ট্রোল
- ইউজার শুধু নিজের ফাইল দেখতে ও মুছতে পারে
- ছাত্ররা শুধু পাবলিক টিচার ফাইল দেখতে পারে
- ক্লাস-ভিত্তিক ফাইল অ্যাক্সেস

### ডাটা ইন্টিগ্রিটি
- ডাটাবেস ট্রানজেকশন ব্যবহার
- ফরেইন কী কনস্ট্রেইন্ট
- ফাইল ডিলিট করার সময় ডাটাবেস ও ফিজিক্যাল ফাইল দুটোই মুছে ফেলা

## 📊 ফাইল ক্যাটেগরি

1. **ডকুমেন্ট** - সাধারণ ডকুমেন্ট ফাইল
2. **অ্যাসাইনমেন্ট** - হোমওয়ার্ক ও প্রজেক্ট
3. **ইমেজ** - ছবি ও গ্রাফিক্স
4. **ভিডিও** - শিক্ষামূলক ভিডিও
5. **অন্যান্য** - অন্য সব ধরনের ফাইল

## 🎯 ভবিষ্যতের উন্নতি

### পরবর্তী ভার্সনে যোগ হতে পারে:
- ফাইল ভার্সনিং সিস্টেম
- অনলাইন ডকুমেন্ট এডিটর
- ফাইল শেয়ারিং লিংক
- বাল্ক আপলোড
- ফাইল কম্প্রেশন
- ভিডিও স্ট্রিমিং
- ফাইল কমেন্ট সিস্টেম

## 🐛 সমস্যা সমাধান

### সাধারণ সমস্যা:
1. **আপলোড ব্যর্থ**: ফাইল সাইজ ও টাইপ চেক করুন
2. **পারমিশন এরর**: ডিরেক্টরি পারমিশন চেক করুন
3. **ডাউনলোড সমস্যা**: ফাইল পাথ ও অ্যাক্সেস পারমিশন চেক করুন

### ডিবাগিং:
- PHP error logs চেক করুন
- Browser developer tools ব্যবহার করুন
- ডাটাবেস কানেকশন চেক করুন

## 📁 ফাইল স্ট্রাকচার

```
uploads/
├── index.php          # মূল আপলোড হোম পেজ
├── upload.php         # ফাইল আপলোড পেজ
├── my_files.php       # ব্যক্তিগত ফাইল তালিকা
├── download.php       # ফাইল ডাউনলোড হ্যান্ডলার
├── delete.php         # ফাইল ডিলিট হ্যান্ডলার
├── view.php           # ফাইল ভিউ পেজ
├── edit.php           # ফাইল এডিট পেজ
├── assignments.php    # শিক্ষকদের অ্যাসাইনমেন্ট
├── assignments_student.php # ছাত্রদের অ্যাসাইনমেন্ট
├── students/          # ছাত্রদের আপলোড ফোল্ডার
├── teachers/          # শিক্ষকদের আপলোড ফোল্ডার
├── assignments/       # অ্যাসাইনমেন্ট ফোল্ডার
└── documents/         # সাধারণ ডকুমেন্ট ফোল্ডার
```

## 🔗 গুরুত্বপূর্ণ লিংক

- **আপলোড হোম**: `http://localhost/bidda/uploads/`
- **নতুন আপলোড**: `http://localhost/bidda/uploads/upload.php`
- **আমার ফাইল**: `http://localhost/bidda/uploads/my_files.php`
- **সেটআপ**: `http://localhost/bidda/create_upload_tables.php`