جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
Armin Rahmati
2 سال پیش توسط Armin Rahmati مطرح شد
6 پاسخ

آپلود 3 عکس

سلام دوستان.
به دلایلی میخوام کاربر برای گالری تصاویر حداکثر 3 تا عکس بتونه آپلود کنه و سه تا input جدا واسش درنظر گرفتم.
حالا واسه آپلود عکس با 3 input جدا، بهینه ترین روش واسه آپلود چیه؟


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 2 سال پیش مطرح شد
0

منظورت از بهترین روش چیه؟!
ساختار منظورته یا نوشتن کد آپلود؟

معمولا اگر از ۱ عکس بیشتر باشه میام یک جدول دیگه واس ذخیره آدرس عکس ها استفاده میکنم و از ریلیشن ها بهره میبرم

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


Armin Rahmati
@arminrahmati999 2 سال پیش آپدیت شد
0

@juza66
جدول جدا در نظر گرفتم به صورت زیر:

Schema::create('job_galleries', function (Blueprint $table) {
    $table->id();
    $table->foreignId('job_id')->constrained()->onDelete('CASCADE');
    $table->string('image1');
    $table->string('image2');
    $table->string('image3');
    $table->timestamps();
});

سه تا input هم به صورت زیر هستن:

<input type="file" name="image1" id="fileInput" class="drop-zoon__file-input" accept="image/*">
<input type="file" name="image2" id="fileInput" class="drop-zoon__file-input" accept="image/*">
<input type="file" name="image3" id="fileInput" class="drop-zoon__file-input" accept="image/*">

فانکشن آپلود هم به صورت زیر نوشتم:

public function uploadImages($images = null) {
        $path = 'upload/images';
        if (request()->hasFile('image1') && $files = request()->file('image1')) {
            $images = $files->store($path, 'public_files');
        }
        return $images;
    }

کنترلر:

public function store(Job $job)
    {
        $images = $this->uploadImages();
        $data['image1'] = $images;
        $job->gallery()->create($data);
        return redirect()->route('jobs.gallery.index', ['job' => $job->id]);
    }

الان کد بالا به درستی عکس رو آپلود میکنه.
حالا مشکل اینجاست که من واسه سه تا input فانکشنمو به چه صورت بنویسم؟


Armin Rahmati
@arminrahmati999 2 سال پیش مطرح شد
0

کدمو به صورت زیر نوشتم و به درستی کار میکنه ولی بهینه نیست، ممنون میشم کمکم کنید.

protected function uploadImage1($images = '') {
        $path = 'upload/images';
        if (request()->hasFile('image1') && $files = request()->file('image1'))
            $images = $files->store($path, 'public_files');
        return $images;
    }
    protected function uploadImage2($images = '') {
        $path = 'upload/images';
        if (request()->hasFile('image2') && $files = request()->file('image2'))
            $images = $files->store($path, 'public_files');
        return $images;
    }
    protected function uploadImage3($images = '') {
        $path = 'upload/images';
        if (request()->hasFile('image3') && $files = request()->file('image3'))
            $images = $files->store($path, 'public_files');
        return $images;
    }
public function store(Request $request, Job $job)
    {
        $image1 = $this->uploadImage1();
        $image2 = $this->uploadImage2();
        $image3 = $this->uploadImage3();
        if ($request->hasFile('image1')) {
            $data['image1'] = $image1;
        } else
            $data['image1'] = null;

        if ($request->hasFile('image2')) {
            $data['image2'] = $image2;
        } else
            $data['image2'] = null;

        if ($request->hasFile('image3')) {
            $data['image3'] = $image3;
        } else
            $data['image3'] = null;

        $job->gallery()->create($data);
        return redirect()->route('jobs.gallery.index', ['job' => $job->id]);
    }

Morteza Khodarahmi
تخصص : Backend Developer
@mrkhodarahmii 2 سال پیش آپدیت شد
0

سلام
میتونی از این پکیج استفاده کنی
کار کردن باهاش راحته و امکان ریسایز کردن عکس ها رو هم بهت میده

موفق باشی


Armin Rahmati
@arminrahmati999 2 سال پیش مطرح شد
0

@mrkhodarahmii
اگه نخوام از این پکیج استفاده کنم، کدمو چه تغییری باید بدم؟


آرش دولتی مهر
@arashdm2020 1 سال پیش مطرح شد
0

تنها راه و البته بهترین راه استفاده از جداول واسط و ریلیشن هست هیچ راه حل منطقی دیگه ای نداره


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام