رضا
4 سال پیش توسط رضا مطرح شد
3 پاسخ

اعتبارسنجی فایل در لاراول

سلام دوستان وقت بخیر
میخواستم برای فایل (تصویر) هست، دوتا شرط رو چک کنم ۱- تعداد تصاویر ۲- سایز هر تصویر. در واقع یک فرم دارم که چند تا عکس رو میشه اپلود کرد و من میخوام تعداد رو تصاویری که اپلود میشه از 5 تا بیشتر نباشه و سایز هر کدوم از تصاویر هم از 5 مگ بیشتر نباشه. در مورد این سوال ممنون میشم کمکم کنید
ممنون


ثبت پرسش جدید
فرید وطنی
تخصص : Software Developer
@faridvatani 4 سال پیش مطرح شد
1

سلام رضا جان
اگر میخوای داخل ولیدشن لاراول این کار رو انجام بدی میتونی از متد max برای هندل کردن این مورد استفاده کنی

$this->validate($request, [
        'images.*' => 'mimes:jpg,jpeg,bmp,png|max:5120',
        'images' => 'max:5',
    ],[
        "images.max" => "تعداد :attribute باید کمتر از :max باشد",
    ]);

max اول حجم هر تصویر رو بررسی میکنه و max دوم تعداد تصاویر


negar
تخصص : اول راه
@negar 4 سال پیش مطرح شد
1

از dropzone استفاده کنید همه این کارهارو میتونید پیاده کنید


Mostafa Nazar
تخصص : برنامه نویس وب و موبایل
@mostafa.8722 4 سال پیش مطرح شد
1

سلام
dropzone رو من توصیه نمیکنم . دست ادم رو میبنده
مثل کد زیر مربوط به vue jsاست البته میتوند کدهای اضافه رو پاک کنید

    uploadFile (e) {

                let files = e.dataTransfer ? e.dataTransfer.files : e.target.files
                let EXTS = ["jpg","png"]
                 let MAX_SIZE = 1 

                if(files.length>15)
                    // 
                if (!files) return;
                await ([...files]).forEach((file,index) => {
                    const ext = file.name.substr(file.name.lastIndexOf('.') + 1).toLocaleLowerCase()

                    if (!EXTS.includes(ext))
                        return this.$toast.error('فرمت فایل مورد قبول نیست'+ext, {
                            position: 'bottom-left'
                        })

                    if (this.totalSize + file.size > MAX_SIZE)
                        return this.$toast.error('حجم فایل مورد نظر بیش از اندازه مجاز است.', {
                            position: 'bottom-left'
                        })

                    if (1 || file.size <= this.MAX_SIZE) {

                        let items =file;

                        let reader = new FileReader();

                        reader.onload =async (e)=>{

                            //  await this.uploaded
                            //await this.$nextTick()
                            let item ={file:file,src: e.target.result};

                            all_items.unshift(item)
                            /*this.$store.dispatch('uploadItemToServer' , {
                                items
                            })*/
                            this.$nextTick(() => {

                            })
                            /*    this.$store.dispatch('updateItems' , {
                                    items ,
                                })*/

                            //   vm.src .push ( e.target.result) ;

                            //   vm.  showModal()
                            //   vm.  showModal()

                            //  document.getElementById('image-upload-box').appendChild(document.getElementById('file-upload-1'));

                        }

                        reader.readAsDataURL(files[index]);

                    }

                });

                this.$store.dispatch('uploadItemToServer' , {
                    items:all_items,
                    getItems:new_getItems,
                })
            }

فرید وطنی
تخصص : Software Developer
@faridvatani 4 سال پیش مطرح شد
1

سلام رضا جان
اگر میخوای داخل ولیدشن لاراول این کار رو انجام بدی میتونی از متد max برای هندل کردن این مورد استفاده کنی

$this->validate($request, [
        'images.*' => 'mimes:jpg,jpeg,bmp,png|max:5120',
        'images' => 'max:5',
    ],[
        "images.max" => "تعداد :attribute باید کمتر از :max باشد",
    ]);

max اول حجم هر تصویر رو بررسی میکنه و max دوم تعداد تصاویر


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

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