سلام دوستان.
من قبلا عکس رو به صورت زیر ذخیره میکردم.
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;
سلام فکر میکنم اگر از این کد استفاده کنید درست میشه
$images = $files->store($path, 'public_files')
Image::make($images)->resize(320, 240);
return $images
@arminrahmati999
داخل اون کدی که بهتون دادم تابع : $images
چه چیزی هست دقیقا ؟ مقدارش رو اینجا قرار بدین
$images = $files->store($path, 'public_files')
Image::make(public_path($images))->resize(320, 240)->insert(public_path($images));
return $images
این کد رو امتحان کنید
@arminrahmati999
شما میتونید به بنده any desk بدید که من کامل بررسی بکنم کدتون رو ؟
اگر نمیتونید
کدتون رو کامل اینجا قرار بدین
سلام.
شما وقتی عکسو 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;
}
موفق باشید.
سلام دوست عزیز من از کد زیر استفاده میکنم و کار میکنه.
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 هم عکسی هست که بارگزاری شده.
@arminrahmati999 خواهش میکنم، مشکلتون حل شد ؟
چون بنده راهی پیدا کردم اگر میخواید براتون بزارم
@arminrahmati999 بنده عذر میخواهی میکنم از شما
این متن رو میخواستم برای یک مشکل دیگه بنویسم که اصلا اشتباه اینجا گذاشتم
خداروشکر که مشلکتون حل شد.
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟