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

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

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

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

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


ثبت پرسش جدید
میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش آپدیت شد
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
@mohsenbostan 5 سال پیش مطرح شد
میثم
تخصص : برنامه نویسی PHP خالص بدون هیچ...
@adoniya.ir 5 سال پیش آپدیت شد
0

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


میثم
تخصص : برنامه نویسی PHP خالص بدون هیچ...
@adoniya.ir 5 سال پیش مطرح شد
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 اعتبار سنجی نمیشه و ایراد حجم نمیگیره.


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


میثم
تخصص : برنامه نویسی PHP خالص بدون هیچ...
@adoniya.ir 5 سال پیش مطرح شد
0

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
0

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش آپدیت شد
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 خالص بدون هیچ...
@adoniya.ir 5 سال پیش مطرح شد
1

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
1

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

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


میثم
تخصص : برنامه نویسی PHP خالص بدون هیچ...
@adoniya.ir 5 سال پیش مطرح شد
1

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


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 5 سال پیش مطرح شد
1

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


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

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