PDA

View Full Version : آپلود فایل و ذخیره بصورت نام فارسی



mesgar
یک شنبه 05 آذر 1391, 15:31 عصر
سلام
من یه سایت نوشتم با php که یه قسمتش یوزر میتونه فایل آپلود کنه
با تابع زیر
move_uploaded_file($_FILES['fuAvatar']['tmp_name'], '../attachment/'.$namepersian.".".get_file_extension($_FILES['fuAvatar']["name"]));
فایل های انگلیسی درسته ولی تو فایل های فارسی تو محیط لوکال(XAmpp) کار نمیکنه ولی تو هاست لینوکسم کار میکنه
ولی تو لینوکسم که کار میکنه اسم فایل رو بصورت ناخوانا (مثل باز)ذخیره میکنه ولی وقتی ادرس فارسی مثلا عکس رو میزنی عکس رو نمایش میده
با این قضیه مشکل اصلیم که نمایش عکس ها تو سایت هست حل شده ولی راهی داره که بشه موقع ذخیره شدن هم درست اسم فارسیش در فولدر مورد نظر ذخیره بشه و نمایش داده بشه؟؟؟
تاپیک های قبلی رو هم نگاه کردم تابع iconv هم مشکلم رو حل نکرد حتی بدتر هم کرد چون دیگه اونطوری دیگه با ادرس فارسی زدن فایل رو نشون نمیداد و خطای 404 میده

MMSHFE
یک شنبه 05 آذر 1391, 17:16 عصر
دوست گرامی، موقع ذخیره کردن توی دیتابیس با iconv تبدیل به یونیکد کنید و معادل یونیکد رو توی دیتابیس بگذارین ولی فایل رو با همون نام اصلی ذخیره کنید. موقع نمایش هم نام رو از دیتابیس بخونید و از حالت یونیکد به معمولی تبدیل کنید و بعد فایل رو بخونید و نشون بدین. مثال:
ذخیره کردن:


<?php
$name = $_FILES['photo']['name'];
$unicode = iconv('windows-1256', 'utf-8', $name);
move_uploaded_file($_FILES['photo']['tmp_name'], 'photos/' . $name);
mysql_query("INSERT INTO `photos` (`filename`) VALUES ('{$unicode}')");
?>

نمایش:


<?php
$images = mysql_query('SELECT * FROM `photos`');
if($images && mysql_num_rows($images) > 0) {
while($image = mysql_fetch_assoc($images)) {
$name = iconv('utf-8', 'windows-1256', $image['filename']);
echo '<img src="photos/' . $name . '"/>';
}
mysql_free_result($images);
}
?>

موفق باشید.