اگر می خواهید نمونه تصاویر base64 بسازید لیست سایتهای زیر جزو بهترین سایتها برای تبدیل تصاویر به کدگذاری 64 بیتی هستند
- سایت base64-image
- سایت base64.guru
- سایت base64decode.net
همه سایت های یاد شده قابلیت encode و decode را دارا می باشند.
یک عکس را در یکی از این سایتها آپلود کنید و کد base64 را مشاهده کنید میخواهیم این کد را با استفاده از api آپلود کنیم
کد زیر کامل هستش سعی کردم برای هر خط توضیحات رو کامل بگم و این متد رو من post در نظرگرفته بودم این متد رو تو یه کنترلر داخل پروژه لاراولی نوشته بودم و اینجا با یه تغییراتی نوشتم لازم ندیدم اعتبارسنجی لاراول رو باز اینجا بیارم دوستان خودشون بلدن و انجام میدن
if(isset($request->avatar) && $request->avatar != '') // اول چک کردیم که حتما مقداری داشته باشه
{
$img = $request->avatar; کد ارسالی شما مثلا با اسم آواتار بوده که اینجا میزاریمش تو متغیر
$img = str_replace('data:image/jpeg;base64,', '', $img);
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace('data:image/jpg;base64,', '', $img);
$img = str_replace('data:image/gif;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$image = base64_decode($img); // تا اینجا کدهای اضافی رو پاک کردیم از رشته دریافتی
$encodedImgString = explode(',', $request->avatar, 2)[1]; از اینجا به بعد باز رشته اولیه رو برای پیدا کردن پسوند تصویر می گردیم
$decodedImgString = base64_decode($encodedImgString);
$info = getimagesizefromstring($decodedImgString);
if(in_array($ext = substr($info['mime'], 6),['png', 'gif', 'jpeg','jpg'])) // اینجا چک کردیم تصویر یکی از این پسوندها باشه
{
$destination= base_path().'/public/upload/em_avatar/'.date('Y').'/'.date('m');// یک مسیر تو پروژه برای آپلود تعیین کردیم
if(!is_dir($destination))
{
mkdir($destination,0777,true);
}// این شرط برای ساخت مسیرمون هستش اگه نبود
$destination=$destination.'/';آخر مسیر یه اسلش اضافه می کنیم
$filename=rand(1111111,99999999); // یه اسم رندوم برای تصویر ساختیم
file_put_contents($destination.$filename.'.'.substr($info['mime'], 6),$image); // تصویر رو که بالا دیکود کرده بودیم تو مسیر تعیین شده + اسم جدید + پسوند تصویر که بالا تشخیص دادیم
// تموم شده به این راحتی آپلود کردیم
}
}
این کل چیزی بود که خیلیا ازش ترس دارن و تو پروژه ها خیلی تاکید میکنن که حتما باید باشه!!! تو قسمت پرسش و پاسخ سوالاتتون رو جواب میدم