ফাইল আপলোড এবং MySQLi দিয়ে সংরক্ষণ

MySQLi এর সাথে ফাইল অপারেশন - মাইএসকিউএল আই (MySQLi) - Database Tutorials

339

ফাইল আপলোড এবং MySQLi ব্যবহার করে সেই ফাইল সংরক্ষণ একটি সাধারণ এবং গুরুত্বপূর্ণ টাস্ক যা ওয়েব অ্যাপ্লিকেশনে প্রায়ই ব্যবহৃত হয়। ফাইল আপলোড করার সময় সঠিক ফরম্যাট যাচাই, নিরাপত্তা নিশ্চিতকরণ এবং ডাটাবেসে সেই ফাইলের তথ্য সংরক্ষণ করার প্রক্রিয়াটি সঠিকভাবে পরিচালনা করা জরুরি।

এখানে ফাইল আপলোড এবং MySQLi দিয়ে সংরক্ষণের সম্পূর্ণ প্রক্রিয়া দেখানো হলো।


1. ফাইল আপলোড ফর্ম তৈরি করা

প্রথমে, একটি HTML ফর্ম তৈরি করতে হবে যেখানে ব্যবহারকারী ফাইল নির্বাচন করবে। এই ফর্মটি POST পদ্ধতিতে ফাইলটি সার্ভারে পাঠাবে।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Upload</title>
</head>
<body>
    <h2>Upload a File</h2>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <label for="file">Choose file:</label>
        <input type="file" name="file" id="file" required>
        <button type="submit" name="submit">Upload</button>
    </form>
</body>
</html>

এখানে:

  • enctype="multipart/form-data": এটি ফর্মে ফাইল আপলোড করার জন্য প্রয়োজনীয় এনকোডিং।
  • ফাইল ইনপুটে ব্যবহারকারী একটি ফাইল নির্বাচন করবে এবং সেই ফাইলটি upload.php ফাইলে পাঠানো হবে।

2. ফাইল আপলোড করার প্রক্রিয়া (upload.php)

এখন, upload.php ফাইলে PHP কোড লিখে ফাইলটি সার্ভারে আপলোড করতে হবে এবং তারপরে ফাইলের তথ্য MySQLi ডাটাবেসে সংরক্ষণ করতে হবে।

<?php
$host = "localhost";    // Database host
$user = "root";         // Database username
$password = "";         // Database password
$dbname = "test";       // Database name

// MySQLi connection
$conn = new mysqli($host, $user, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Check if form is submitted
if (isset($_POST['submit'])) {
    // File information
    $file = $_FILES['file'];
    $file_name = $file['name'];
    $file_tmp = $file['tmp_name'];
    $file_size = $file['size'];
    $file_error = $file['error'];

    // Get file extension
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

    // Allowed file types
    $allowed = array('jpg', 'jpeg', 'png', 'gif', 'pdf');

    // Check if the file type is allowed
    if (in_array($file_ext, $allowed)) {
        // Check if there was an error during upload
        if ($file_error === 0) {
            // Check file size (max 5MB)
            if ($file_size <= 5000000) {
                // Generate unique file name to avoid conflicts
                $file_new_name = uniqid('', true) . '.' . $file_ext;
                $file_destination = 'uploads/' . $file_new_name;

                // Move the file to the target folder
                if (move_uploaded_file($file_tmp, $file_destination)) {
                    // Insert file information into the database
                    $stmt = $conn->prepare("INSERT INTO files (file_name, file_path) VALUES (?, ?)");
                    $stmt->bind_param("ss", $file_new_name, $file_destination);
                    if ($stmt->execute()) {
                        echo "File uploaded and saved to database successfully!";
                    } else {
                        echo "Error inserting file information into the database.";
                    }
                    $stmt->close();
                } else {
                    echo "Error uploading the file.";
                }
            } else {
                echo "File is too large. Maximum size is 5MB.";
            }
        } else {
            echo "There was an error during file upload.";
        }
    } else {
        echo "Invalid file type. Only JPG, JPEG, PNG, GIF, and PDF are allowed.";
    }
}

$conn->close();
?>

কোড ব্যাখ্যা:

  1. $_FILES['file']: এটি ফাইলের সমস্ত তথ্য ধারণ করে, যেমন নাম, টাইপ, সাইজ, এবং তtemporary অবস্থান।
  2. Allowed File Types: ফাইলের এক্সটেনশন চেক করে নিশ্চিত করা হয় যে, আপলোডযোগ্য ফাইল টাইপ কেবলমাত্র অনুমোদিত ধরনের (যেমন, JPG, PNG, PDF ইত্যাদি)।
  3. File Size Check: ফাইলের আকার চেক করা হয় যাতে এটি নির্ধারিত সীমানার মধ্যে থাকে (এখানে 5MB)।
  4. Unique File Name: ফাইলের নামটি ইউনিক করা হয় যাতে একাধিক ফাইল একসাথে আপলোড করার সময় কনফ্লিক্ট না হয়।
  5. Move Uploaded File: move_uploaded_file() ফাংশনটি ফাইলটিকে নির্দিষ্ট গন্তব্যে স্থানান্তর করে।
  6. Database Insert: ফাইলের নাম এবং অবস্থান (path) MySQLi ব্যবহার করে ডাটাবেসে সংরক্ষণ করা হয়।

3. ডাটাবেসে টেবিল তৈরি করা

ফাইল সম্পর্কিত তথ্য সংরক্ষণের জন্য একটি টেবিল তৈরি করতে হবে। উদাহরণস্বরূপ:

CREATE TABLE files (
    id INT AUTO_INCREMENT PRIMARY KEY,
    file_name VARCHAR(255) NOT NULL,
    file_path VARCHAR(255) NOT NULL,
    upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

এখানে:

  • file_name: আপলোড করা ফাইলের নাম।
  • file_path: ফাইলটির সার্ভারে সংরক্ষিত অবস্থান (path)।
  • upload_date: ফাইলটি আপলোড করার তারিখ এবং সময়।

4. ফাইলের ডাটা দেখানো

আপলোড করা ফাইলগুলো ডাটাবেস থেকে রিট্রিভ করে প্রদর্শন করতে চাইলে, নিম্নলিখিত কোড ব্যবহার করতে পারেন:

<?php
$host = "localhost";
$user = "root";
$password = "";
$dbname = "test";

// MySQLi connection
$conn = new mysqli($host, $user, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Retrieve files from database
$sql = "SELECT * FROM files";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "File: <a href='" . $row['file_path'] . "'>" . $row['file_name'] . "</a><br>";
    }
} else {
    echo "No files found.";
}

$conn->close();
?>

এখানে ডাটাবেস থেকে আপলোড করা ফাইলের তথ্য (ফাইলের নাম এবং অবস্থান) রিট্রিভ করে HTML লিঙ্কের মাধ্যমে প্রদর্শন করা হয়েছে।


সারাংশ

  • ফাইল আপলোড এবং সংরক্ষণের জন্য, প্রথমে একটি HTML ফর্ম তৈরি করতে হয়, যেখানে ব্যবহারকারী ফাইলটি নির্বাচন করবে।
  • PHP স্ক্রিপ্ট ব্যবহার করে ফাইলটি সার্ভারে আপলোড করা হয় এবং MySQLi এর মাধ্যমে ফাইলের তথ্য ডাটাবেসে সংরক্ষিত হয়।
  • ফাইলের নাম এবং অবস্থান MySQLi এর মাধ্যমে ডাটাবেসে ইনসার্ট করা হয়, যাতে আপনি পরে সেগুলো রিট্রিভ এবং ডিসপ্লে করতে পারেন।
  • নিরাপত্তার জন্য ফাইলের টাইপ এবং সাইজ চেক করা উচিত, এবং ব্যবহারকারীকে শুধু নির্দিষ্ট টাইপের ফাইল আপলোড করতে অনুমতি দেওয়া উচিত।
Content added By
Promotion

Are you sure to start over?

Loading...