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

دانلود تصویر URL با PHP – در این آموزش با استفاده از لینک عکسی که کاربر در فیلد وارد می کند تصویر را دانلود کرده و در سرور خودمان ذخیره می کنیم .
توجه داشته باشید که یکسری محدودیت های از جمله لیست زیر برای ذخیره در سرور در نظر گرفته ایم :
- محدودیت فرمت فایل که باید jpg / png / gif باشد
- محدودیت حجم فایل که زیر 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 باشد"); } ?>
ارسال نظر