دانلود تصویر با URL و ذخیره روی سرور

دانلود تصویر با URL و ذخیره روی سرور

دانلود تصویر URL با PHP – در این آموزش با استفاده از لینک عکسی که کاربر در فیلد وارد می کند تصویر را دانلود کرده و در سرور خودمان ذخیره می کنیم .

توجه داشته باشید که یکسری محدودیت های از جمله لیست زیر برای ذخیره در سرور در نظر گرفته ایم :

  1. محدودیت فرمت فایل که باید jpg / png / gif باشد
  2. محدودیت حجم فایل که زیر 3 مگابایت باشد
  3. عرض زیر 1920 و ارتفاع زیر 1200 باشد


دموی برنامه

اسکریپت index.php

<?php
if (@$_POST['image-url'])
    require_once "process.php";
?>
<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <title>Rapidcode.iR - سورس کد</title>
    <link rel="stylesheet" href="./static/css/main.css">
</head>
<body>
    <div class="container">
        <a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a>

        <form method="POST">
            <input type="url" name="image-url" id="image-url">
            <input type="submit" value="ذخیره روی سرور">
        </form>

        <?php if (isset($image_content_url)) : ?>
            <h3>پیش نمایش تصویر دانلود شده روی سرور</h3>
            <img width="200" height="200" src="<?php echo $image_content_url ?>">
        <?php endif; ?>

    </div>

</body>
</html>


اسکریپت process.php

این script وظیفه بررسی فایل قبل از ذخیره شدن روی سرور را دارد که باید با توجه به محدودیت ها شرایط را بررسی کند .

<?php

$image_url = $_POST['image-url'];

$file_headers = get_headers($image_url, true);

$timestamp = time();
$filepath = "content/img-{$timestamp}";

// allowed data
$allowed_image_max_filesize = 3145728; // 3MB
$allowed_image_type = [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG];
$allowed_image_sizes = ["width" => 1920, "height" => 1200];

// image info
$image_size_info = @getimagesize($image_url);
$image_filesize = @$file_headers['Content-Length'];
$image_size = ["width" => $image_size_info[0], "height" => $image_size_info[1]];
$image_type_int = $image_size_info[2];
if (in_array($image_type_int, $allowed_image_type)) {
    if ($allowed_image_max_filesize < $image_filesize) {
        die("حجم تصویر بیشتر از {$allowed_image_max_filesize} بایت می باشد");
    } else if ($allowed_image_sizes['width'] < $image_size['width'] || $allowed_image_sizes['height'] < $image_size['height']) {
        die("عرض و ارتفاع تصویر نباید بیشتر از {$allowed_image_sizes['width']} باشد");
    }

    $file_content = file_get_contents($image_url);
    if(!$file_content)
        die("خطایی در دریافت فایل از سرور رخ داده");

    $extension = image_type_to_extension($image_type_int, true);
    $filepath .= $extension;
    $is_moved = !is_bool(file_put_contents($filepath, $file_content));
    if($is_moved)
        $image_content_url = "{$_SERVER['HTTP_REFERER']}{$filepath}";

} else {
    die("فرمت فایل باید png / jpg / gif باشد");
}
?>


سورس دانلود تصویر با URL در PHP

ارسال نظر

جهت استفاده از کد حتما از تگ pre استفاده نمایید .

contact us