PDA

View Full Version : سوال: آپلود فایل



rash44
دوشنبه 12 مرداد 1388, 22:04 عصر
سلام

به چه صورت میشه نوع فایلی که کاربر آپیود میکنه رو کنترل کرد
مثلا کاربر فقط بتونه فایل zip ارسال کنه در غیر اینصورت برنامه ارور بده

mrrajabi
سه شنبه 13 مرداد 1388, 08:40 صبح
خب یه دستور هست که پسوند فایل رو میده. اگه هم نیست که خودت می تونی آخرین کاراکتر نقطه توی فایل رو پیدا کنی(نام فایل رو بر اساس کاراکتر نقطه خرد کن و خونه ی آخر آرایه رو بخون).

اعظم
چهارشنبه 14 مرداد 1388, 10:19 صبح
function Return_Extension($file_name)
{
$ext = substr(strrchr($file_name, '.'), 1);
$ext = strtolower($ext);
return $ext;
}



تابع فوق سمت سرور پسوند فايل رو بر ميگردونه اما بد نيست سمت كلاينت با جاوا اسكريپت هم فايل رو چك كني

اعظم
چهارشنبه 14 مرداد 1388, 10:24 صبح
function check_file_extention(fname,ext)
{
var badName="", allBlank=true, rx,strtmp;
strtmp=fname.replace(/^\s+/,'').replace(/\s+$/,'');
if( strtmp!='' )
{
allBlank=false;
//----
// main if( !rx.test(e[i].value) ) badName+='\n\n' + e[i].value;
var ext_array,k;
ext_array=ext.split(",");
ext_sw=false;
for (k=0;k<ext_array.length;k++)
{
rx=new RegExp("[^\.]\."+ext_array[k]+"\s*$", "i");
if( rx.test(fname) ) ext_sw=true;
}
if( !ext_sw ) return false;
else return true;
//------------------------
}
else return false;
}

var filename2=document.getElementById('userfile1').val ue;

if(!(check_file_extention(filename2,'png,gif,jpg') ))
{
error//
sw=false;
}

rasep1983
چهارشنبه 14 مرداد 1388, 10:48 صبح
function Return_Extension($file_name)
{
$ext = substr(strrchr($file_name, '.'), 1);
$ext = strtolower($ext);
return $ext;
}



تابع فوق سمت سرور پسوند فايل رو بر ميگردونه اما بد نيست سمت كلاينت با جاوا اسكريپت هم فايل رو چك كني

ابدا کد جالبی نیست:لبخند:
کاربر اگه فایلی مثلا به این اسم رو بده فاجعه میشه :گیج:file.gif.php

mrrajabi
چهارشنبه 14 مرداد 1388, 11:04 صبح
من گفتم که. خودت اسم فایل رو بر اساس نقطه خرد کن و خانه آخر آرایه رو بخون

اعظم
چهارشنبه 14 مرداد 1388, 11:14 صبح
ابدا کد جالبی نیست:لبخند:
کاربر اگه فایلی مثلا به این اسم رو بده فاجعه میشه :گیج:file.gif.php

ميدوني اين تابع strrchr چه كار ميكنه ؟ كمي در موردش تحقيق كن !!

اعظم
چهارشنبه 14 مرداد 1388, 11:42 صبح
چون خوب جواب نميده الان دقيقا يادم نمياد دليلش رو ولي يادم مياد يكي از كدهاي من بعد از مدتي از كار افتاد مشكلش هم دقيقا اين كد بود و بعد از اون من جايگزينش كردم با كد خودم ( فكر كنم در برخي بروزرها جواب نميداد چون فايل به صورت فايل tmp به سرور منتقل ميشه و در واقع مشخصات فايل بايد توسط بروزر ارسال بشه )

اعظم
چهارشنبه 14 مرداد 1388, 12:10 عصر
اصلا مربوط نمیشه !!! درسته بعضی از مرورگرها برای نمایش ظاهر سایت مشکل دارند ولی نه در این حد که استاندارد فرم ها و ارسال اطلاعات رو همین جور کشکی انجام بدن . اون وقت توی محیط وب سنگ رو سنگ بند نمی شد.

احتمالا شما این اتریبیوت رو به فرم های نمیدی و نوع اطلاعات رو مشخص نمی کنی :

<form enctype="multipart/form-data">

نه فايل ارسال ميشد اما تست نوع فايل انجام نميشد و من در اون برنامه فايل تست مي كردم و بعد اسم رو عوض مي كردم و پسوند تشخيص داده شده رو به اون اضافه مي كردم اما خطايي كه رخ ميداد اين بود كه فايلها بدون پسوند ذخيره مي شدند ! پسوند رو تشخيص نمي داد ( نوع فايل رو )

كدي كه گفتي رو هم هميشه استفاده ميكنم

اعظم
چهارشنبه 14 مرداد 1388, 12:47 عصر
اصلا مربوط نمیشه !!!


البته مربوط ميشه ، يك مثال خيلي ساده : براي يك عكس ثابت و مشخص
firefox, chrom : image/jpeg
ie :image/pjpeg

الگوريتم تغيير نام در اون برنامه به شكل ديگه اي بود
در واقع هم ميخواستم مطمئن بشم فايل جزء فايل هاي مجاز براي آپلود هستش و بعد تغيير نامش بدم

rasep1983
چهارشنبه 14 مرداد 1388, 13:18 عصر
ميدوني اين تابع strrchr چه كار ميكنه ؟ كمي در موردش تحقيق كن !!

خیلی بامزه بود :قهقهه:

راست میگی فکر کردم اولین نقطه ببعد رو برمیگردونه حق با شماست