راکت
میثم
میثم
توسط میثم مطرح شد
حل
13 پاسخ

دریافت سایز دو فیلد فایل در یک فرم

سلام.
من با جاوا اسکریپت میخوام بخش فایل توی فرمم رو چک کنم.
توی فرم 2 تا فیلد هست که هر دو تا اپشنال هستن. یکی برای عکس و یکی برای فایل
حالا من برای چک همچین کدی نوشتم

var pic = document.getElementById('pic').files[0];
var file = document.getElementById('file').files[0];
if(pic.size < 3000000){ 
if(file.size < 8000000){

حالا کد وقتی که کاربر عکس رو آپلود میکنه کار می کنه و برای فیلد فایل ایراد حجم میگیره.
اما وقتی که عکس انتخاب نمیشه ، کد بخش فایل هم کار نمیکنه و هر حجمی رو قبول می کنه.
مشکل از کجاست؟


ثبت پرسش جدید
میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

دقیق نمیدونم دنبال چی هستید و صورت مسئله چیه. ولی تا جایی که فهمیدم هدفتون رو، این رو امتحان کنید:

$('#Check').submit(function(evt){
  var pics = document.getElementById('pics').files[0];
  var file = document.getElementById('file').files[0];

  if(pics) {
    if(pics.size < 3000000){
    } else{evt.preventDefault();alert('err')}
  }
  if(file) {
    if(file.size < 8000000){
    //Submit form
    }else{evt.preventDefault();alert('err')}
  }
});

محسن بستان
محسن بستان
تخصص :Senior Backend Developer
@mohsenbostan6 سال پیشمطرح شد
میثم
میثم
تخصص :برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!
@adoniya.ir6 سال پیشمطرح شد
0

سلام. @mohsenbostan
این لینک اصلا به درد کار من نمیخوره در مورد اعتبار سنجی یک فیلد هست که موضوع سوال من نیست.
ببینید ما دو تا فیلد فایل داریم.
توی اولی عکس اپ میشه و توی دومی فایل با فرمت مختلف.
موقعی که عکس انتخاب میشه جاوا درست عمل می‌کنه.
اما موقعی که عکس انتخاب نمیشه، انگار بخش اعتبار سنجی فیلد دوم اصلا نادیده گرفته میشه.
دوستان کسی راهشو بلد نیست؟؟؟؟
توی شرط اول گفتیم عکس کمتر از حدود ۳ مگ، پس اگه کاربر عکسی رو انتخاب نکنه حجم میشه صفر و شرط اول برقراره اما چرا شرط دوم توی این شرایط اجرا نمیشه؟


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

1) منظورتون جاوااسکریپت هستش یا جاوا؟ اینا باهم فرق دارند.
2) کدهای HTML و JS رو باهم قرار بدین.


میثم
میثم
تخصص :برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!
@adoniya.ir6 سال پیشمطرح شد
0

سلام فرقی نداره کلا کار راه بیفته.
کد html

<form method="post" enctype="multipart/form-data" id="Check">
<table>
<tr><td>تصویر شاخص : </td></tr>
<tr><td><input type="file" name="pics" id="pics"></td></tr>
<tr><td>فایـل ضمیمـه : </td></tr>
<tr><td><input type="file" name="file" id="file"></td></tr>
<tr><td>
<button type="submit">send</button>
</td></tr>
</table></form>

کد فایل JS

$('#Check').submit(function(evt){
var pics = document.getElementById('pics').files[0];
var file = document.getElementById('file').files[0];
if(pics.size < 3000000){
if(file.size < 8000000){
 //Submit form
}else{evt.preventDefault();alret ....}
}else{evt.preventDefault();alret ....}
});

کدهای دیگه هم بود که خلاصه کردم.
تویه همین قسمت مشکل وجود داره. اگر برای فیلد pics یه فایل انتخاب بشه فیلد file هم به درستی کار می کنه.
اما اگر برای فیلد pics هیچ فایلی انتخاب نکنیم. فیلد file اعتبار سنجی نمیشه و ایراد حجم نمیگیره.


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

منظورم اینه که دسته بندی گفتگو رو اشتباه که قرار بدین، شاید سایرین هم نیان کمک تون کنند، فکر می کنند درباره جاوا و موبایل هستش.
دسته بندی صحیح که قرار بدین برای آینده هم بهتره.


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

فکر می کنم مشکل کدهاتون هم پیداست، دلیلش اینه که شما شرط رو تودرتو قرار دادین.
این باید خطای شما باشه.
به چه دلیل شرط اندازه فایل رو داخل شرط اندازه عکس گذاشتید؟
این مشکل ساز شده.


میثم
میثم
تخصص :برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!
@adoniya.ir6 سال پیشمطرح شد
0

ممنونم. درسته شرط ها تو در تو هستن، اما از لحاظ منطقی نباید مشکل ایجاد کنه. مثلا اگه کاربر عکس ارسال نکنه شرط اول مقدار ۰ رو برای حجم بر می‌گردونه که درسته اما چرا شرط دوم کار نمیکنه؟
اگه بخوایم درستش کنیم شروط باید چطور نوشته بشه؟
هر دو فیلد اپشنال هستن ولی در صورت انتخاب فایل باید حجم ها چک بشن.
ممنون میشم کدمو اصلاح کنید و قرار بدین.
@milad


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

خیر، اشتباه می کنید، منطقی هستش.
چون مقدار متغیر pics زمانی که کاربر عکسی رو وارد نکرده باشه، مقدار تعریف نشده (undefined) میشه. برای همین قرار نیست عدد 0 رو برای اندازه نشون بده.


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
0

دقیق نمیدونم دنبال چی هستید و صورت مسئله چیه. ولی تا جایی که فهمیدم هدفتون رو، این رو امتحان کنید:

$('#Check').submit(function(evt){
  var pics = document.getElementById('pics').files[0];
  var file = document.getElementById('file').files[0];

  if(pics) {
    if(pics.size < 3000000){
    } else{evt.preventDefault();alert('err')}
  }
  if(file) {
    if(file.size < 8000000){
    //Submit form
    }else{evt.preventDefault();alert('err')}
  }
});

میثم
میثم
تخصص :برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!
@adoniya.ir6 سال پیشمطرح شد
1

@milad
آقا دمت گرم. کارت درسته.
مشکل حل شد. اینکه دو تا شرط رو از هم جدا کردیم و از console.log استفاده کردیم عالی بود.
یه سوال این console.log دقیقا چیکار می کنه؟


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
1

سلامت باشی عزیز جان
چه خوب که حل شدش

نه این بخش console.log مهم نیستش، اون واسه این بود که من خطایابی کنم و بتونم کد رو تحلیل کنم. اون نباید جز کدها باشه (حذفش کردم).
برای سنجش کدها و خطایابی، برنامه نویس ها از تابع console.log کمک میگیرند.


میثم
میثم
تخصص :برنامه نویسی PHP خالص بدون هیچ گونه فریمورکی! با کمی چاشنی CSS و جاوا !!!
@adoniya.ir6 سال پیشمطرح شد
1

@milad
ممنونم. 👌👌👌👌


میلاد-م
میلاد-م
تخصص :توسعه‌دهنده رابط کاربری - Front-End
@milad6 سال پیشمطرح شد
1

مخلصم، سرزنده باشین


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

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