যখন ব্যবহারকারীরা একটি ওয়েব অ্যাপ্লিকেশনে ফাইল আপলোড করেন, তখন সেই ফাইলগুলি সঠিকভাবে ম্যানেজ (প্রশাসন) এবং ডিলিট (মুছে ফেলা) করা গুরুত্বপূর্ণ। PHP এবং MySQL ব্যবহার করে, আপনি সহজেই আপলোড করা ফাইলগুলির ট্র্যাক রাখতে পারেন এবং প্রয়োজনের সময় সেগুলি মুছে ফেলতে পারেন।
১. File Upload Management
ফাইল আপলোডের প্রক্রিয়া অনেক গুরুত্বপূর্ণ, বিশেষ করে বড় সাইজের ফাইল এবং বিভিন্ন ফাইল ফরম্যাটের ক্ষেত্রে। PHP এর সাহায্যে, আপনি ফাইল আপলোড প্রক্রিয়াটি সহজে নিয়ন্ত্রণ করতে পারেন।
১.১ File Upload Form তৈরি করা
প্রথমে, HTML ফর্ম তৈরি করা দরকার যেখানে ব্যবহারকারী ফাইল আপলোড করতে পারবেন।
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
</body>
</html>
এই ফর্মটি ব্যবহারকারীকে একটি ফাইল নির্বাচন করার জন্য প্রম্পট করবে এবং তারপর upload.php ফাইলটি ব্যবহৃত হবে ফাইলটি আপলোড করার জন্য।
১.২ PHP স্ক্রিপ্ট দিয়ে ফাইল আপলোড করা
এখন, PHP স্ক্রিপ্ট তৈরি করে ফাইলটি আপলোড করা হবে:
<?php
$target_dir = "uploads/"; // ফাইল আপলোডের জন্য ডিরেক্টরি
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// চেক করা হচ্ছে, ফাইলটি একটি ইমেজ কি না
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// যদি ফাইলটি ইতিমধ্যে এক্সিস্ট করে তবে তা চেক করা হচ্ছে
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// ফাইল সাইজ চেক করা
if ($_FILES["fileToUpload"]["size"] > 500000) { // 500KB এর বেশি ফাইল সাইজ অনুমোদিত নয়
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// শুধুমাত্র নির্দিষ্ট ফাইল ফরম্যাট অনুমোদন করা হচ্ছে
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// যদি সবকিছু ঠিক থাকে, তবে ফাইলটি আপলোড করা হবে
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
এখানে:
- $_FILES["fileToUpload"]: এই সুপারগ্লোবাল ভেরিয়েবলটি ব্যবহার করে ফাইলের তথ্য অ্যাক্সেস করা হয়।
- move_uploaded_file(): এই ফাংশনটি ব্যবহার করে আপলোড হওয়া ফাইলটি নির্দিষ্ট ডিরেক্টরিতে সরানো হয়।
- File validation: ফাইলের টাইপ, সাইজ এবং এক্সিস্টিং ফাইল চেক করা হয়েছে।
২. Uploaded Files রেকর্ড MySQL ডেটাবেসে সংরক্ষণ করা
আপনি চাইলে আপলোড হওয়া ফাইলের তথ্য (যেমন ফাইলের নাম, টাইপ, সাইজ) ডেটাবেসে সংরক্ষণ করতে পারেন। এটি ভবিষ্যতে ফাইল ব্যবস্থাপনা এবং মুছে ফেলা সহজ করবে।
২.১ Database Table Structure
আপলোড হওয়া ফাইলের তথ্য সংরক্ষণ করার জন্য একটি টেবিল তৈরি করুন:
CREATE TABLE uploaded_files (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
file_type VARCHAR(50) NOT NULL,
file_size INT(11) NOT NULL,
upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
২.২ PHP স্ক্রিপ্ট দিয়ে ফাইলের তথ্য ডেটাবেসে সংরক্ষণ করা
<?php
// ডেটাবেস সংযোগ
$conn = new mysqli("localhost", "root", "", "my_database");
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
// ফাইলের তথ্য ডেটাবেসে সংরক্ষণ করা
$sql = "INSERT INTO uploaded_files (file_name, file_type, file_size)
VALUES ('" . basename($_FILES["fileToUpload"]["name"]) . "', '" . $imageFileType . "', '" . $_FILES["fileToUpload"]["size"] . "')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
// ডেটাবেস সংযোগ বন্ধ করা
$conn->close();
?>
এখানে:
- ফাইল আপলোড হওয়ার পর, সেই ফাইলের নাম, টাইপ এবং সাইজ ডেটাবেসে সংরক্ষণ করা হচ্ছে।
- INSERT INTO uploaded_files কুয়েরি ব্যবহার করে তথ্য সংরক্ষণ করা হচ্ছে।
৩. File Deletion (ফাইল মুছে ফেলা)
ফাইল মুছে ফেলার জন্য, আপনাকে ডেটাবেস থেকে ফাইলের রেকর্ড মুছে ফেলতে হবে এবং তারপর সেই ফাইলটি ফিজিক্যালি সার্ভার থেকে মুছে ফেলতে হবে।
৩.১ File Deletion from Database
ডেটাবেস থেকে ফাইলের তথ্য মুছে ফেলার জন্য, আপনাকে ফাইলের ID বা file_name ব্যবহার করে ডিলিট কুয়েরি লিখতে হবে।
<?php
// ডেটাবেস সংযোগ
$conn = new mysqli("localhost", "root", "", "my_database");
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// ফাইল ID নিয়ে ডিলিট কুয়েরি
$file_id = $_GET['id']; // ডিলিট করতে হবে এমন ফাইলের ID
$sql = "SELECT file_name FROM uploaded_files WHERE id = $file_id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$file_name = $row["file_name"];
// ডেটাবেস থেকে রেকর্ড মুছে ফেলা
$sql = "DELETE FROM uploaded_files WHERE id = $file_id";
if ($conn->query($sql) === TRUE) {
echo "Record deleted successfully";
// ফাইল সিস্টেম থেকে ফাইল মুছে ফেলা
$file_path = "uploads/" . $file_name;
if (file_exists($file_path)) {
unlink($file_path);
echo " File deleted from server.";
} else {
echo " File does not exist on the server.";
}
} else {
echo "Error: " . $conn->error;
}
}
$conn->close();
?>
এখানে:
- প্রথমে ডেটাবেস থেকে ফাইলের নাম নিয়ে আসা হচ্ছে।
- তারপর unlink() ফাংশন ব্যবহার করে ফাইলটি সিস্টেম থেকে মুছে ফেলা হচ্ছে।
- অবশেষে, ডেটাবেস থেকে সংশ্লিষ্ট রেকর্ড মুছে ফেলা হচ্ছে।
৪. Best Practices for File Management
- File Validation: ফাইল আপলোড করার আগে তার টাইপ, সাইজ এবং এক্সটেনশন যাচাই করুন, যেন ক্ষতিকর ফাইল আপলোড না হয়।
- Unique File Names: ফাইলের নামের মধ্যে ইউনিক আইডেন্টিফায়ার (যেমন, টাইমস্ট্যাম্প বা র্যান্ডম নাম) যোগ করুন, যেন একই নামের ফাইল আপলোডের সমস্যা না হয়।
- Security: ফাইল আপলোডের সময়, ব্যবহারকারীদের আপলোড করার জন্য অনুমোদিত ফাইল টাইপের সীমাবদ্ধতা দিন।
- Storage Optimization: বড় ফাইলগুলোর জন্য
Read more