যখন আপনি একটি ফাইল আপলোড করেন এবং সেই ফাইলের পাথ (path) বা অবস্থান (location) MySQL ডাটাবেসে সংরক্ষণ করতে চান, তখন ফাইলের পাথ সংরক্ষণ করা একটি সাধারণ কাজ। এটি সাধারণত ফাইল আপলোড সিস্টেমের ক্ষেত্রে ব্যবহৃত হয়, যেখানে ফাইল সিস্টেমে ফাইলটি সংরক্ষণ করা হয় এবং ডাটাবেসে সেই ফাইলের পাথ সংরক্ষণ করা হয়।
এখানে আমরা দেখব কিভাবে ফাইল আপলোড করে তার পাথ MySQL ডাটাবেসে সংরক্ষণ করা যায়।
1. ফাইল আপলোড করার জন্য HTML ফর্ম তৈরি করা
প্রথমে, ফাইল আপলোড করার জন্য একটি HTML ফর্ম তৈরি করতে হবে। এটি ব্যবহারকারীদের একটি ফাইল সিলেক্ট করার সুযোগ দেয় এবং সেই ফাইলটি সার্ভারে আপলোড করা হয়।
<form action="upload.php" method="POST" enctype="multipart/form-data">
<label for="file">Choose a file:</label>
<input type="file" name="file" id="file" required>
<button type="submit" name="submit">Upload</button>
</form>
এখানে, enctype="multipart/form-data" ব্যবহার করা হয়েছে যাতে ফাইল সঠিকভাবে সার্ভারে পাঠানো যায়।
2. ফাইল আপলোড এবং পাথ MySQL ডাটাবেসে সংরক্ষণ
এখন, ফাইলটি সার্ভারে আপলোড করার পর, সেই ফাইলের পাথ MySQL ডাটাবেসে সংরক্ষণ করার জন্য একটি PHP স্ক্রিপ্ট তৈরি করব।
2.1 PHP স্ক্রিপ্ট তৈরি করা
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// ফাইল আপলোড চেক করা
if (isset($_POST['submit'])) {
$file = $_FILES['file'];
// ফাইলের নাম, টেম্পোরারি পাথ এবং এক্সটেনশন বের করা
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileError = $_FILES['file']['error'];
$fileSize = $_FILES['file']['size'];
// ফাইল এক্সটেনশন চেক করা
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
$allowed = array('jpg', 'jpeg', 'png', 'pdf'); // অনুমোদিত এক্সটেনশন
// যদি ফাইল এক্সটেনশন বৈধ হয়
if (in_array($fileExt, $allowed)) {
// যদি কোনো ত্রুটি না থাকে
if ($fileError === 0) {
// ফাইল সাইজ চেক করা (৫MB এর কম)
if ($fileSize < 5000000) {
// নতুন ফাইল নাম তৈরি করা (ইউনিকে ফাইল নাম দেওয়া)
$fileNewName = uniqid('', true) . "." . $fileExt;
$fileDestination = 'uploads/' . $fileNewName;
// ফাইলটি নির্দিষ্ট ডিরেক্টরিতে আপলোড করা
if (move_uploaded_file($fileTmpName, $fileDestination)) {
// ফাইলের পাথ ডাটাবেসে সংরক্ষণ
$sql = "INSERT INTO files (file_name, file_path) VALUES ('$fileName', '$fileDestination')";
if ($conn->query($sql) === TRUE) {
echo "File uploaded successfully. Path saved in database.";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
} else {
echo "There was an error uploading your file.";
}
} else {
echo "Your file is too large.";
}
} else {
echo "There was an error uploading your file.";
}
} else {
echo "You cannot upload files of this type.";
}
}
$conn->close();
?>
2.2 কোডের ব্যাখ্যা:
- ফাইল আপলোড চেক: প্রথমে, ফাইলটি আপলোড হয়েছে কি না তা চেক করা হয়
isset($_POST['submit'])দিয়ে। - ফাইলের তথ্য নেওয়া:
$_FILESএর মাধ্যমে ফাইলের নাম, টাইপ, টেম্পোরারি পাথ, সাইজ ইত্যাদি নেওয়া হয়। - ফাইল এক্সটেনশন চেক: আমরা শুধুমাত্র নির্দিষ্ট এক্সটেনশন (যেমন:
.jpg,.jpeg,.png,.pdf) অনুমোদন করি। - ফাইল সাইজ চেক: ফাইলের সাইজ ৫MB এর নিচে হতে হবে।
- ফাইল রিনেমিং: ফাইলের নামকে ইউনিক বানাতে
uniqid()ফাংশন ব্যবহার করা হয়, যাতে একে অপরের সাথে ফাইলের নাম কনফ্লিক্ট না হয়। - ফাইল আপলোড:
move_uploaded_file()ফাংশনের মাধ্যমে ফাইলটিকে ডিরেক্টরিতে স্থানান্তরিত করা হয়। - ডাটাবেসে পাথ সংরক্ষণ: ফাইলটি সফলভাবে আপলোড হলে, তার পাথ (ফাইলের নতুন অবস্থান)
uploads/ডিরেক্টরিতে সংরক্ষণ করা হয় এবং সেই পাথ ডাটাবেসেরfile_pathকলামে স্টোর করা হয়।
3. MySQL টেবিল তৈরি করা
ডাটাবেসে ফাইলের পাথ সংরক্ষণ করার জন্য একটি টেবিল তৈরি করতে হবে। নিচে একটি উদাহরণ দেয়া হলো:
CREATE TABLE files (
id INT AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
file_path VARCHAR(255) NOT NULL
);
এই টেবিলের মাধ্যমে আপনি ফাইলের নাম (file_name) এবং পাথ (file_path) সংরক্ষণ করতে পারবেন।
4. ফাইলের পাথ রিটার্ন করা
ফাইলটি আপলোড হওয়ার পর, ডাটাবেস থেকে ফাইলের পাথ রিট্রিভ করতে চাইলে নিম্নলিখিত কোড ব্যবহার করতে পারেন:
<?php
$sql = "SELECT * FROM files";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "File Name: " . $row["file_name"] . " - File Path: " . $row["file_path"] . "<br>";
}
} else {
echo "No files found.";
}
?>
এই কোডটি ডাটাবেস থেকে সমস্ত ফাইলের পাথ এবং নাম রিটার্ন করবে।
সারাংশ
ফাইল আপলোড করার পর, ফাইলের পাথ MySQL ডাটাবেসে সংরক্ষণ করা একটি সাধারণ প্রক্রিয়া। LIMIT, OFFSET এবং ফাইল আপলোডের মতো অন্যান্য অপারেশনসহ, ডাটাবেসে সঠিক তথ্য স্টোর করা অত্যন্ত গুরুত্বপূর্ণ। PHP স্ক্রিপ্টের মাধ্যমে ফাইল আপলোড এবং পাথ সংরক্ষণ করার এই প্রক্রিয়া কার্যকরী এবং সহজে ডাটাবেস ব্যবস্থাপনায় সাহায্য করে।
Read more