PDA

View Full Version : سوال: چگونه تشخیص پسوند فایل آپلود شده ..



HCSH90
سه شنبه 10 مرداد 1391, 17:08 عصر
سلام و خسته نباشید .

مشکلم تو چک کردن برای پسوند عکس هست:

بطور مثال صفحه ای طراحی کردم برای آپلود فایل . ولی فقط میخوام عکسهایی بگیره که مثلا با پسوند
jpg یا gif باشه ..

و میخوام از کد جاوا اسکریپت استفاده کنم که تو همون صفحه به کاربر پیغام رو بده ولی نمیدونم چه جوری بنویسم . تو اینترنت هم جست و جو کردم چیزی پیدا نکردم ...

فقط همینو میدونم :




<script language="javascript">

function send()
{


f = document.getElementById["f].value ;

?
?
?

}
<script>


ولی حالا نمیدونم چه شکلی بیاد 3 کاراکتر آخر رشته رو پیدا کنه ؟
تا بعد عمل مقایسه صورت بگیره .

plague
سه شنبه 10 مرداد 1391, 23:16 عصر
اول اینکه اینجا تالار php هست نه جاوا اسکریپت
دوم اینکه شما نمیتونی اینجوری با جاوا اسکریپت فایل آپلود کنی این

pejman_view
سه شنبه 10 مرداد 1391, 23:44 عصر
سلام

کاربر پلاگ درست فرمودند اینجا فروم پی اچ پی نه جاوا اسکریپت اما چون دست خالی نرید بفرما:

function getExtension(filename) {
return filename.split('.').pop();
}

HCSH90
چهارشنبه 11 مرداد 1391, 16:00 عصر
ببخشید که حالا تاپیک جاوا اسکریپتو اینجا زدم ...

آخه تقریبا یه سوال شبیه همینو اونجا پرسیدم ولی کسی جوابی نداد ....

از آقای pejman هم تشکر میکنم که کد رو نوشتند .. ولی زیاد متوجه نشدم ... یعنی مشکلم اینکه جاوا اسکریپت خوب یاد نگرفتم ...
( البته ازتون تشکر رو کردم :چشمک: )

اگه کتاب یا جزوه ی خوبی دارید ممنون میشم که معرفی نمایید .. ( البته تاپیکشو تو خود تالار جاوا اسکریپت میزنم که اگر دوست داشتید اونجا بهم معرفی کنید )

ممنون.
================

البته یه چیزی هم در مورد کدی که قرار دادید بپرسم :

اونجوری که من متوجه شدم کلا تو برنامه نویسی سایت , هر کی از یه جور کد استفاده میکنه ..

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



function send()
{
var f=f.form1.value ;
var ext=f.substr(f.lenght-3,3) ;


if (ext=="gif")||( ext=="jpg" )||(ext =="png" ))
form1.submit();
else
alert("incorrect File Type !") ;

}


که تو فیلم که می دیدم کد اجرا شد ولی خودم نوشتم کار نمیکرد ....

واسه ی همین واقعا گیج شدم .

HCSH90
چهارشنبه 11 مرداد 1391, 16:06 عصر
برای یادگیری جاوا اسکریپت چه کتاب یا جزوه ای خوبه ؟ (http://barnamenevis.org/showthread.php?354257-%D8%A8%D8%B1%D8%A7%DB%8C-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%DA%86%D9%87-%DA%A9%D8%AA%D8%A7%D8%A8-%DB%8C%D8%A7-%D8%AC%D8%B2%D9%88%D9%87-%D8%A7%DB%8C-%D8%AE%D9%88%D8%A8%D9%87-%D8%9F)

imanitc
پنج شنبه 12 مرداد 1391, 09:10 صبح
من خودم از اين تابع استفاده کردم
function imgchk(id){
var ext = $('#'+id).val().split('.').pop().toLowerCase();
var allow = new Array('jpg','jpeg');
if(jQuery.inArray(ext, allow) == -1) {
alert('فرمت فایل ورودی قابل قبول نیست \n\n قابل قبول است jpg فقط عکس با فرمت');
$('#'+id).focus();
$('#'+id).css({border:'1px solid red'}) ;
return false;
}
}

pejman_view
پنج شنبه 12 مرداد 1391, 12:33 عصر
ببخشید که حالا تاپیک جاوا اسکریپتو اینجا زدم ...

آخه تقریبا یه سوال شبیه همینو اونجا پرسیدم ولی کسی جوابی نداد ....

از آقای pejman هم تشکر میکنم که کد رو نوشتند .. ولی زیاد متوجه نشدم ... یعنی مشکلم اینکه جاوا اسکریپت خوب یاد نگرفتم ...
( البته ازتون تشکر رو کردم :چشمک: )

اگه کتاب یا جزوه ی خوبی دارید ممنون میشم که معرفی نمایید .. ( البته تاپیکشو تو خود تالار جاوا اسکریپت میزنم که اگر دوست داشتید اونجا بهم معرفی کنید )

ممنون.
================

البته یه چیزی هم در مورد کدی که قرار دادید بپرسم :

اونجوری که من متوجه شدم کلا تو برنامه نویسی سایت , هر کی از یه جور کد استفاده میکنه ..

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



function send()
{
var f=f.form1.value ;
var ext=f.substr(f.lenght-3,3) ;


if (ext=="gif")||( ext=="jpg" )||(ext =="png" ))
form1.submit();
else
alert("incorrect File Type !") ;

}


که تو فیلم که می دیدم کد اجرا شد ولی خودم نوشتم کار نمیکرد ....

واسه ی همین واقعا گیج شدم .

در آنچه هر برنامه نویس یک جور برنامه می نویسد شکی نیست، می شود یک تابع را به 5 تا برنامه نویس بدهید باالتبع خواهید دید هر کدام به سبک خاصی آن را نوشته که جواب هم می دهد. اما در برنامه نویسی همیشه جواب مهم نیست ممکن است یکی از برنامه نویس ها آن کد را با تابع های سنگین و در 100 خط بنویسد که منابع سخت افزاری زیادی را بکار بگیرد و در مقابل می بنیید برنامه نویس دیگری آن را در 5 یا 6 خط می نویسد که منابع کمتر مصرف کند البته منظورم با این مثال نیست و هر دوی آن ها درست است. آن کد هم مشکلی ندارد فقط شما اشتباهاً بجای length عبارت lenght نوشتید. اگر آن هم درست کنید مشکلتان برطرف می شود.
در مورد کتاب هم اونجا توضیح خواهم داد.

یا علی

HCSH90
پنج شنبه 12 مرداد 1391, 19:57 عصر
ممنون از جواب همه ...

من کد رو این شکلی تغییر دادم ولی اجرا نمیشه .. !



<script language="javascript">

function check()
{
var x= document.forms["form1"]["f"];

var n =x.substr(-3);


if (n=="gif")||( n=="jpg" )||(n =="png" ))
form1.submit();
else
alert("incorrect File Type !") ;


}

</script>


برای فرم هم رویداد onSubmit تعریف کردم ولی وقتی اجرا میکنم هر فایلی رو قبول میکنه !

تابع substr هم درسته . طبق w3school :

http://www.w3schools.com/jsref/jsref_substr.asp

eshpilen
پنج شنبه 12 مرداد 1391, 21:51 عصر
ممکن است یکی از برنامه نویس ها آن کد را با تابع های سنگین و در 100 خط بنویسد که منابع سخت افزاری زیادی را بکار بگیرد و در مقابل می بنیید برنامه نویس دیگری آن را در 5 یا 6 خط می نویسد که منابع کمتر مصرف کند
البته امروزه کامل و مستحکم بودن منطق و امنیت اغلب مهمتر از پرفورمنس هست.
طبیعتا اگر منطق و امنیت برنامه ناقص باشه، پرفورمنس عالی نمیتونه جاش رو بگیره.
مثلا در یکی از کدهایی که گذاشتن، پسوندها رو سه حرفی درنظر گرفته، درحالیکه در واقعیت مثلا پسوند میتونه jpeg باشه که 4 حرفه.

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

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

pejman_view
جمعه 13 مرداد 1391, 00:09 صبح
البته امروزه کامل و مستحکم بودن منطق و امنیت اغلب مهمتر از پرفورمنس هست.
طبیعتا اگر منطق و امنیت برنامه ناقص باشه، پرفورمنس عالی نمیتونه جاش رو بگیره.
مثلا در یکی از کدهایی که گذاشتن، پسوندها رو سه حرفی درنظر گرفته، درحالیکه در واقعیت مثلا پسوند میتونه jpeg باشه که 4 حرفه.

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

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

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

یا علی موفق باشید

HCSH90
جمعه 13 مرداد 1391, 21:31 عصر
سلام

کاربر پلاگ درست فرمودند اینجا فروم پی اچ پی نه جاوا اسکریپت اما چون دست خالی نرید بفرما:

function getExtension(filename) {
return filename.split('.').pop();
}

من الان همین برنامه رو اجرا میکنم هر فایلی رو قبول میکنه ؟!



function check(fileName)
{

var n = fileName.split('.').pop();

if ( n == "jpg")
form1.submit();
else
{ alert ("incorrect File Type !") ;
return false;

}
}




<form action="save.php" method="post" enctype="multipart/form-data" name="form1"
onSubmit="return check(f);" >