دانلود فایل‌های حجیم با PHP: یک ابزار ساده برای ذخیره فایل‌ها از لینک مستقیم

آیا تا به حال نیاز داشته‌اید که یک فایل را از اینترنت به سرور خود دانلود کنید؟ این کد PHP به شما اجازه می‌دهد به سادگی یک فایل را از یک URL مشخص دریافت کرده و در سرور خود ذخیره کنید. این ابزار می‌تواند در پروژه‌هایی مانند ساخت اسکریپت‌های پشتیبان‌گیری، دانلود خودکار فایل‌ها، یا هر موقعیت دیگری که نیاز به دانلود فایل‌ها از لینک مستقیم دارید، مفید باشد.

ویژگی‌های کلیدی

  • دانلود فایل‌ها از یک URL مستقیم
  • ذخیره خودکار فایل‌ها در سرور
  • نمایش پیشرفت دانلود به کاربر
  • استفاده ساده و کارآمد در پروژه‌های PHP
  • بدون نیاز به کتابخانه‌های خارجی یا ابزارهای پیچیده

چگونه کار می‌کند

این کد با دریافت یک لینک از کاربر، فایل را از اینترنت دانلود کرده و آن را در سرور شما ذخیره می‌کند. با استفاده از توابع fopen و fwrite در PHP، فایل به صورت قسمت‌های کوچک (chunk) دانلود شده و به سرعت در سرور ذخیره می‌شود. همچنین، در طول فرآیند دانلود، می‌توانیم پیشرفت آن را به کاربر نمایش دهیم، هرچند در این نسخه ساده‌تر از نمایش پیشرفت به صورت متن استفاده می‌کنیم.

چگونه از این کد استفاده کنیم

  1. فایل کد را دانلود کرده و با نام download.php ذخیره کنید.
  2. فایل را در هاست خود آپلود کنید. مطمئن شوید که هاست شما از PHP پشتیبانی می‌کند.
  3. در مرورگر خود، فایل download.php را اجرا کنید.
  4. لینک فایل مورد نظر را در فرم وارد کرده و روی دکمه “دانلود فایل” کلیک کنید.
  5. فایل دانلود شده و در پوشه‌ای که فایل PHP در آن قرار دارد، ذخیره می‌شود.

کد PHP

در زیر کد کامل PHP برای دانلود فایل از یک URL و ذخیره آن در سرور قرار دارد. شما می‌توانید این کد را در یک فایل به نام download.php ذخیره کنید:

 

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>دانلود فایل</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }

        .container {
            background-color: #fff;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
            width: 100%;
            max-width: 400px;
            text-align: center;
        }

        h1 {
            font-size: 1.5rem;
            color: #333;
            margin-bottom: 20px;
        }

        label {
            display: block;
            font-size: 1rem;
            margin-bottom: 10px;
            color: #555;
        }

        input[type="text"] {
            width: 100%;
            padding: 10px;
            font-size: 1rem;
            border: 1px solid #ccc;
            border-radius: 5px;
            margin-bottom: 20px;
            box-sizing: border-box;
        }

        input[type="submit"] {
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 12px 20px;
            font-size: 1rem;
            cursor: pointer;
            border-radius: 25px;
            transition: background-color 0.3s ease;
            width: 100%;
        }

        input[type="submit"]:hover {
            background-color: #45a049;
        }

        .message {
            margin-top: 20px;
            font-size: 1rem;
            color: #333;
        }
    </style>
</head>
<body>

<div class="container">
    <h1>دانلود فایل</h1>

    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $url = $_POST['file_url'];
        $newfname = basename($url); // استخراج نام فایل از URL

        echo "<div class='message'>دانلود شروع شد!</div>";
        echo "<div class='message'>در حال دانلود، لطفاً منتظر بمانید...</div>";

        $file = fopen($url, "rb");
        if ($file) {
            $newf = fopen($newfname, "wb");
            $totalSize = 0;
            $chunkSize = 1024 * 50; // 50KB
            while (!feof($file)) {
                $data = fread($file, $chunkSize);
                fwrite($newf, $data);
                $totalSize += strlen($data);
                // فقط به جهت نمایش یک پیام
                echo "<div class='message'>دانلود: " . round($totalSize / (1024 * 1024), 2) . " MB</div>";
                flush(); // فرستادن خروجی به مرورگر
                ob_flush(); // فرستادن خروجی به مرورگر
            }
            fclose($file);
            fclose($newf);
            echo "<div class='message'>دانلود فایل به اتمام رسید! فایل با نام <strong>$newfname</strong> ذخیره شد.</div>";
        } else {
            echo "<div class='message'>خطا در دانلود فایل. لطفاً مطمئن شوید که لینک درست است.</div>";
        }
    }
    ?>

    <form method="post" action="">
        <label for="file_url">لینک فایل:</label>
        <input type="text" id="file_url" name="file_url" placeholder="لینک فایل را وارد کنید" required>
        <input type="submit" value="دانلود فایل">
    </form>
</div>

</body>
</html>

نکات مهم برای اجرا روی سرور

برای اجرای این کد روی سرور، باید مطمئن شوید که تنظیمات زیر در محیط سرور شما برقرار است:

  1. نسخه PHP:
    • سرور شما باید حداقل از PHP نسخه 5.3 یا بالاتر پشتیبانی کند.
  2. تنظیمات allow_url_fopen:
    • این گزینه باید در تنظیمات PHP فعال باشد تا اجازه دهد PHP فایل‌ها را از URLهای خارجی باز کند. این تنظیم در فایل php.ini باید به صورت زیر تنظیم شده باشد:
      allow_url_fopen = On

    • اگر به تنظیمات php.ini دسترسی ندارید، با ارائه‌دهنده هاست خود تماس بگیرید تا این گزینه را فعال کند.
  3. دسترسی به فایل‌های سیستم:
    • مطمئن شوید که سرور شما اجازه نوشتن در دایرکتوری‌ای که این اسکریپت در آن قرار دارد را دارد. بدون این دسترسی، فایل نمی‌تواند در سرور ذخیره شود.
  4. زمان اجرای اسکریپت (max_execution_time):
    • اگر فایل‌هایی که قصد دانلود آن‌ها را دارید بسیار بزرگ هستند، مطمئن شوید که زمان اجرای اسکریپت شما کافی است. می‌توانید این مقدار را در فایل php.ini تنظیم کنید:
      max_execution_time = 300

  5. حافظه مجاز برای اسکریپت (memory_limit):
    • اگر فایل‌های بزرگی را دانلود می‌کنید، مقدار حافظه مجاز برای اسکریپت را افزایش دهید:
      memory_limit = 128M

نتیجه‌گیری

این کد PHP یک روش ساده و کارآمد برای دانلود فایل‌ها از یک URL و ذخیره آن‌ها در سرور شما ارائه می‌دهد. با استفاده از این ابزار، می‌توانید فایل‌ها را به راحتی از اینترنت دانلود و ذخیره کنید. این کد به ویژه برای پروژه‌هایی که نیاز به دانلود فایل‌های بزرگ به صورت خودکار دارند، مفید است. امیدواریم این ابزار بتواند به شما در پروژه‌های مختلفتان کمک کند.

دکمه دانلود فایل:

برای راحتی شما، این کد در یک فایل PHP آماده شده است که می‌توانید آن را دانلود و استفاده کنید.

دانلود کد PHP

پشتیبانی و سوالات

اگر در استفاده از این کد با مشکلی مواجه شدید یا سوالی داشتید، خوشحال می‌شویم که به شما کمک کنیم. با ما تماس بگیرید یا سوالات خود را در بخش نظرات مطرح کنید.

پاسخ‌ها

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ‌ها

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *