PDA

View Full Version : گرفتن پسوند فایل ارسالی



Mohajerx
جمعه 19 مرداد 1386, 05:41 صبح
یک فرم آپلود عکس دارم که میخواستم فقط پسوند های خاصی رو قبول کنه.
به چه صورت میشه پسوند رو بررسی کرد و مثلا اگر غیر از jpg - gif بود پیام مورد نظرمون به کاربران نمایش داده بشه ؟

قصدم این هست که دقیقا پسوند فایل ارسال بررسی.
و همینطور اینکه اسم فایل بصورت رندوم تغییر کنه. منظورم اسم فایل ارسالی هست.
تا برای فایل مشابه و هم اسم بعدی موردی نباشه.
پیشاپیش ممنون.

چیزی که من الان استفاده میکنم ساده هست و به اینصورت ( این کل کد هست ) :




$path= "upload/".$HTTP_POST_FILES['ufile']['name'];
if($ufile !=none)
{

if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{
echo "Successful<BR/>";
echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type']."<BR/>";
echo "<img src=\"$path\" width=\"150\" height=\"150\">";
}
else
{
echo "Error";
}
}

cybercoder
جمعه 19 مرداد 1386, 11:23 صبح
قبلا بحث شده جستجو کنید.

Mohajerx
جمعه 19 مرداد 1386, 18:28 عصر
جستجو کردم چیزی پیدا نشد.
کلمات "پسوند" , "آپلود" رو توی بخش PHP جستجو کردم.

moohssenn
جمعه 19 مرداد 1386, 20:13 عصر
<?php

if (isset($_POST["submit"]))
{
if($HTTP_POST_FILES['upload_file']['type'] != "image/gif" AND
$HTTP_POST_FILES['upload_file']['type'] != "image/pjpeg" AND
$HTTP_POST_FILES['upload_file']['type'] !="image/jpeg")
{
echo "You may only upload .gif or .jpeg files";
unlink($HTTP_POST_FILES['upload_file']['tmp_name']);
} else {
echo "the file is the correct format";
}
}
?>
<html>
<head></head>
<body>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
<br><br>
Choose a file to upload:<br>
<input type="file" name="upload_file">
<br>
<input type="submit" name="submit" value="submit">
</form>

</body>
</html>


مثال برگرفته از کتاب Learning PHP and MySQL By Michele Davis, Jon Phillips

mehdi_kamari
یک شنبه 21 مرداد 1386, 11:26 صبح
سلام دوستان .
راستش اگه راهی دارین که پسوند خالص رو برگردونه ممنون میشم بگید .
مثل :gif یا doc

دلیلش هم اینه که من می خوام اسم فایل و عوض کنم و پسوند رو حذف کنم .برای همین
باید پسوند رو تو DB نگه دارم .

خلاصه همچنان منتظر کمک شما هستم .

موفق باشید .

moohssenn
یک شنبه 21 مرداد 1386, 17:38 عصر
دوست عزیز وقتی شما نام فایل رو به دست آورده باشید


echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<

و فایلهاتونم محدود به نوعهای خاصی مثل jpg و .... باشه یکی از روشهای به دست آوردن پسوند فایل اینه :


$FileName=$HTTP_POST_FILES['upload_file']['name'];

echo substr("$FileName",strlen("$FileName")-3,3);


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

oxygenws
یک شنبه 21 مرداد 1386, 20:25 عصر
test.jpeg چی؟؟ :)

moohssenn
یک شنبه 21 مرداد 1386, 22:50 عصر
test.jpeg چی؟؟ :)

دروست امید جان . اگه لطف کنید شما اگه روش مناسبی در نظر دارید راهنمائی نمائید

oxygenws
یک شنبه 21 مرداد 1386, 23:37 عصر
آخرین «نقطه» رو با strrpos بگیر (توجه کن که دو تا r داره) و بفرست به substr

ضمن اینکه من می تونم یه فایل image/jpeg بفرستم برات که اسمش دقیقا این باشه:
man_yek_file_e_jpeg_mibasham.gif

حالا چی؟؟ :دی

houtanal
یک شنبه 21 مرداد 1386, 23:51 عصر
<?php
print mime_content_type("myfiles.zip");
print mime_content_type("poppy.jpg");
?>
Working with MIME types (http://www.hudzilla.org/phpwiki/index.php?title=Working_with_MIME_types)

mehdi_kamari
دوشنبه 22 مرداد 1386, 00:01 صبح
سلام houtanal جان دستت درد نکنه . هنوز تست نکردم ولی معلومه که درسته.
جبران کنیم آقا

oxygenws
دوشنبه 22 مرداد 1386, 07:29 صبح
البته تا جایی که من یادمه، اینی که برادر هوتن گفت نیاز به نصب اکستنشن مربوطه داره که معمولا جایی هم نصب نیست :)

houtanal
دوشنبه 22 مرداد 1386, 21:39 عصر
البته تا جایی که من یادمه، اینی که برادر هوتن گفت نیاز به نصب اکستنشن مربوطه داره که معمولا جایی هم نصب نیست :)
تو از من هاست بخر توش نصبه.

proSPY
پنج شنبه 22 مهر 1389, 07:26 صبح
سلام دوستان .
راستش اگه راهی دارین که پسوند خالص رو برگردونه ممنون میشم بگید .
مثل :gif یا doc

دلیلش هم اینه که من می خوام اسم فایل و عوض کنم و پسوند رو حذف کنم .برای همین
باید پسوند رو تو DB نگه دارم .

خلاصه همچنان منتظر کمک شما هستم .

موفق باشید .

سلام دوست عزیز
با این کد شما میتونین پسوند رو استخراج کنین

$pars=pathinfo("index.php");
echo $pars['extension']; // print ===> php

امیـرحسین
پنج شنبه 22 مهر 1389, 12:24 عصر
اینم یه مدل:
$extension = end( explode('.', 'some.file.class.php') );

binyaft
پنج شنبه 22 مهر 1389, 12:37 عصر
این هم هست
function getExtension($str) {

$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

funpatogh
پنج شنبه 22 مهر 1389, 21:23 عصر
<?php
$file="ali/reza/a.php";
echo substr($file,strpos($file,".")+1);
?>