سلام دوستان وقت بخیر
میخواستم برای فایل (تصویر) هست، دوتا شرط رو چک کنم ۱- تعداد تصاویر ۲- سایز هر تصویر. در واقع یک فرم دارم که چند تا عکس رو میشه اپلود کرد و من میخوام تعداد رو تصاویری که اپلود میشه از 5 تا بیشتر نباشه و سایز هر کدوم از تصاویر هم از 5 مگ بیشتر نباشه. در مورد این سوال ممنون میشم کمکم کنید
ممنون
سلام رضا جان
اگر میخوای داخل ولیدشن لاراول این کار رو انجام بدی میتونی از متد max برای هندل کردن این مورد استفاده کنی
$this->validate($request, [
'images.*' => 'mimes:jpg,jpeg,bmp,png|max:5120',
'images' => 'max:5',
],[
"images.max" => "تعداد :attribute باید کمتر از :max باشد",
]);
max اول حجم هر تصویر رو بررسی میکنه و max دوم تعداد تصاویر
از dropzone استفاده کنید همه این کارهارو میتونید پیاده کنید
سلام
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,
})
}
شاید پاسخ شما همینجا باشد