سلام دوستان.
من قبلا عکس رو به صورت زیر ذخیره میکردم.
protected function uploadImage($images = '') {
$path = 'upload/images';
if (request()->hasFile('image') && $files = request()->file('image'))
$images = $files->store($path, 'public_files');
return $images;
}
اما الان با استفاده از این پکیج به صورت زیر کدمو نوشتم ولی عکس داخل دیتابیس ذخیره نمیشه و فقط داخل مسیر مشخص شده قرار میگیره.
$images = Image::make($files->store($path, 'public_files'))->resize(320, 240);
ممنون میشم راهنماییکنید.
سلام.
شما وقتی عکسو resize میکنی در آخر باید اونو با دستور save ذخیره کنی تا دیگه عکس با سایز اصلی ذخیره نشه، در واقع کدتونو باید به صورت زیر بنویسید.
protected function uploadImage($images = '') {
$path = 'upload/images';
if (request()->hasFile('image') && $files = request()->file('image'))
$images = $files->store($path, 'public_files');
Image::make($images)->resize(320, 240)->save($images);
return $images;
}
موفق باشید.
ذخیره سازی فایل تصویر و ثبت در دیتابیس دو فرایندکاملا مستقل از هم هستند و باید بصورت جداگانه توسط خودتون هندل بشن. در قطعه کد اولتون هم صرفا عملیات ذخیره سازی فایل تصویر انجام میشه و نه ذخیره سازی در دیتابیس.
برای ذخیره اطلاعات تصویر در دیتابیس باید بصورت جداگانه این کار رو با استفاده از Eloquent یا QueryBuilder انجام بدید.
@mhyeganeh
ذخیره سازی در دیتابیس هم کدشو نوشتم ولی ذخیره نمیشه.
در واقع بدون استفاده از پکیج همه چی درست کار میکنه ولی وقتی از پکیج استفاده میکنم داخل دیتابیس ذخیره نمیشه.
public function store(CreateGalleryRequest $request, Job $job)
{
$image = $this->uploadImage();
if ($request->hasFile('image')) {
$data['image'] = $image;
} else
$data['image'] = null;
$job->gallery()->create($data);
return redirect(route('jobs.gallery.index' , ['job' => $job->id]));
}شاید پاسخ شما همینجا باشد
عرض کردم این قضیه هیچ ارتباطی با پکیج نداره.
شما باید ببینید چه اطلاعاتی رو اینجا دارید به متد create پاس میدید:
$job->gallery()->create($data);
و طبیعیه که خروجی متد store با Image::make یکسان نیست. بعد از استفاده از پکیج باید این اطلاعات رو هم متناسب با خروجی ویرایش کنید و اطلاعات درست رو به create بدید.
@mhyeganeh
الان من کدمو به صورت زیر نوشتم که هم داخل دیتابیس ذخیره میشه و هم مسیر مشخص شده ولی عکسا resize نمیشن و با همون سایز اصلی ذخیره میشه.
$data['image'] = $image . $image->dirname . '/' . $image->basename;@ehsndvr
مشکل همچنان باقیست و عکس با سایز اصلی ذخیره میشه.
@arminrahmati999
داخل اون کدی که بهتون دادم تابع : $images
چه چیزی هست دقیقا ؟ مقدارش رو اینجا قرار بدین
@arminrahmati999
شما میتونید به بنده any desk بدید که من کامل بررسی بکنم کدتون رو ؟
اگر نمیتونید
کدتون رو کامل اینجا قرار بدین
سلام دوست عزیز من از کد زیر استفاده میکنم و کار میکنه.
if ($receivedImage){
$imageType=$receivedImage->getClientOriginalExtension();
$generated=generateRandomString();
$imageName= $generated . '.' .$imageType;
$fullAddress='/storage/structures/'.$imageName;
$image=Image::make($receivedImage);
$image->resize(600,600)->encode('jpg');
Storage::put('/public/structures/'.$imageName, (string) $image->encode());
return $fullAddress;
}else{
return null;
}
نکته ای که هست اینه ک من یک نام رندون ایجاد میکنم با تابعی که اسمش مشخصه
و مسیر ذخیره ی این فایل رو هم برگشت میدم که برای خودم ذخیره کنم
کد خوانا هست
$receivedImage هم عکسی هست که بارگزاری شده.
@mhyeganeh
@ehsndvr
@rezajahangir
@salar.mohammad2013
تشکر از همگی بابت وقتی که گذاشتید.
@arminrahmati999 خواهش میکنم، مشکلتون حل شد ؟
چون بنده راهی پیدا کردم اگر میخواید براتون بزارم
@ehsndvr
به نتیجه رسیدم ولی ممنون میشم از تجربه شما هم استفاده کنم.
@arminrahmati999 بنده عذر میخواهی میکنم از شما
این متن رو میخواستم برای یک مشکل دیگه بنویسم که اصلا اشتباه اینجا گذاشتم
خداروشکر که مشلکتون حل شد.
موفق باشید.