PDA

View Full Version : سوال: تابع تشخیص فرمت فایل



phpweb
چهارشنبه 17 فروردین 1390, 19:10 عصر
وقتی که یه فایل رو آپلود می کنیم به کمک متغیر زیر می تونیم فرمت فایل رو تشخیص بدیم.


$_FILES[src][type]

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

امیـرحسین
چهارشنبه 17 فروردین 1390, 22:34 عصر
این تابع تا حدی میتونه الهام بخش باشه در این زمینه: get_mime (http://boplo.ir/php/get-mime-function/)

phpweb
چهارشنبه 17 فروردین 1390, 23:21 عصر
این تابع تا حدی میتونه الهام بخش باشه در این زمینه: get_mime (http://boplo.ir/php/get-mime-function/)

این تابع رو برنامه نویس نوشته.

من قبلا در جایی دیدم که پی اچ پی برای این کار یه تابع آماده ارائه کرده. شما اسم این تابع رو نمی دونید؟

mtchabok
پنج شنبه 18 فروردین 1390, 09:49 صبح
سلام منظورتون mime_content_type (http://ir2.php.net/manual/en/function.mime-content-type.php) هس .
بهتره که از تابعهایی که برنامه نویسان نوشتن استفاده کنید ...

phpweb
پنج شنبه 18 فروردین 1390, 10:04 صبح
سلام منظورتون mime_content_type (http://ir2.php.net/manual/en/function.mime-content-type.php) هس .
بهتره که از تابعهایی که برنامه نویسان نوشتن استفاده کنید ...

من یه تابع قبلا دیدم که این کار رو انجام می داد اما مطمئن نیستم که این تابع بود.

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

mtchabok
پنج شنبه 18 فروردین 1390, 10:23 صبح
مشکلش اینه که سفارشی نیس و تمامی فایلها رو متناسب با محتویاتشون mimetype بر میگردونه و اصلا کاری به نوع نوشته شده در اسم فایل نداره .
و خیلی از فایلهای متنی رو مثل html ، php ، css ، js و ... رو text/plain برمیگردونه .

phpweb
پنج شنبه 18 فروردین 1390, 13:08 عصر
مشکلش اینه که سفارشی نیس و تمامی فایلها رو متناسب با محتویاتشون mimetype بر میگردونه و اصلا کاری به نوع نوشته شده در اسم فایل نداره .
و خیلی از فایلهای متنی رو مثل html ، php ، css ، js و ... رو text/plain برمیگردونه .

تابع fileinfo (http://ir2.php.net/manual/en/ref.fileinfo.php)رو می تونم بجای این تابع بکار ببرم، این تابع مشکلی که گفتید رو داره یا نه؟

امیـرحسین
پنج شنبه 18 فروردین 1390, 14:18 عصر
این تابع رو برنامه نویس نوشته.

من قبلا در جایی دیدم که پی اچ پی برای این کار یه تابع آماده ارائه کرده. شما اسم این تابع رو نمی دونید؟
تابع اصلی همون mime_content_type هست که اگه به صفحه اش برید میبیند که deprecated شده و پیشنهاد شده که از fileinfo استفاده بشه. ولی از اونجایی که fileinfo ممکنه روی سرورهایی نصب نباشه باید چکش کنیم.
همچنین خود تابع mime_content_type هم در PHP5.3 وجود نداره و این هم باید چک بشه.
تابعی که معرفی کردم همین کار رو میکنه و به عنوان آخرین راه اسم فایل رو بررسی میکنه.

phpweb
پنج شنبه 18 فروردین 1390, 15:02 عصر
تابع اصلی همون mime_content_type هست که اگه به صفحه اش برید میبیند که deprecated شده و پیشنهاد شده که از fileinfo استفاده بشه. ولی از اونجایی که fileinfo ممکنه روی سرورهایی نصب نباشه باید چکش کنیم.
همچنین خود تابع mime_content_type هم در PHP5.3 وجود نداره و این هم باید چک بشه.
تابعی که معرفی کردم همین کار رو میکنه و به عنوان آخرین راه اسم فایل رو بررسی میکنه.

برای دانلود یه فایل باید فرمت فایل رو تشخیص داد و از طریق ارسال هدر، فرمت فایل رو به مرورگر ارسال کرد تا مرورگر بتونه بدون مشکل فایل رو دانلود کنه. من برای اینکار می خوام فرمت فایل رو تشخیص بدم.

به نظر شما تابع mime_content_type یا fileinfo برای اینکار مناسب هستند یا اینکه باید از توابعی که برنامه نویسها نوشتند استفاده کنم؟

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

mtchabok
پنج شنبه 18 فروردین 1390, 20:43 عصر
شما میتونید یه کاری کنید
یه تابع خودتون بنویسید که دارای این الگوریتمی که مینوسم باشه :

if (function_exists(fileinfo))
return fileinfo($file_address)
elseif( استفاده از کدهای آماده برنامه نویسان )
return تابع آماده
elseif( function_exists(mime_content_type) )
return mime_content_type($file_address)
else
return false

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