PDA

View Full Version : مشكل در آپلود تصاوير با نام فارسي؟؟؟



vatansever
دوشنبه 27 آبان 1392, 11:14 صبح
سلام دوستان
من كد زير رو واسه آپلود تصوير استفاده ميكنم .
وقتي نام عكسي كه فارسيه رو انتخاب ميكنم تصوير اپلود ميشه ولي نام فايل رو اينجوري "ظ…ط­ظ…ط¯ .M.
(822).jpg" ذخيره ميكنه.
چه چيز بايد به كد اضافه كنم؟



$username=$_POST['user'];
//fayllar ki zaxira ola bilar .
$allowedtypes = array ("image/jpeg","image/pjpeg","image/png","image/gif");
//ha zaxira olsun.

//agar fayl motabardi
if (isset ($_FILES['myfile'])){
//icaza verilar fayllarin icindadi ya yox.
if (in_array ($_FILES['myfile']['type'], $allowedtypes)){
//kopi ela.
if ($_FILES['myfile']['error'] == 0){


$savefolder = $username;
$thefile = $savefolder . "/" . $_FILES['myfile']['name'];
if (!move_uploaded_file ($_FILES['myfile']['tmp_name'], $_FILES['myfile']['name'])){
echo "eror.";

}

smksmk
سه شنبه 28 آبان 1392, 14:11 عصر
سلام

string iconv ( string $in_charset , string $out_charset , string $MyText )

vatansever
چهارشنبه 29 آبان 1392, 09:59 صبح
سلام

string iconv ( string $in_charset , string $out_charset , string $MyText )

ميشه يكم توضيح بدين من هر چي دستكاريش كردم ارور داد.(پارامترها؟)

كد رو هم حتما بايد به اين شكل بنويسم نه ؟ اخه ارور ميده

iconv ( $in_charset , $out_charset , $MyText )

smksmk
چهارشنبه 29 آبان 1392, 10:07 صبح
دوست عزیز
in_charset کاراکتر ورودی هست و out_charset کاراکتر خروجیت . مثلاً اینطوری :

iconv("UTF-8", "ISO-8859-1", $text)

vatansever
چهارشنبه 29 آبان 1392, 12:08 عصر
دوست عزیز
in_charset کاراکتر ورودی هست و out_charset کاراکتر خروجیت . مثلاً اینطوری :

iconv("UTF-8", "ISO-8859-1", $text)

وقتي فايلي كه فارسيه رو انتخاب ميكنم اين error رو ميده :
Notice: iconv() [function.iconv]: Detected an illegal character in input string in C:\wamp\www\process_upload.php on line 101
هيچ تغييري هم رو فايل اپلود شده ايجاد نميشه:متفکر:
ببينيد كدي كه شما فرمودين رو درست جايي نوشتم؟



iconv("UTF-8", "ISO-8859-1",

$_FILES['myfile']['name']);

$username=$_POST['user'];
//Allowed file MIME types.
$allowedtypes = array

("image/jpeg","image/pjpeg","image/

png","image/gif","sound/mp3");
//Where we want to save the file to.

//If we have a valid file
if (isset ($_FILES['myfile'])){
//Then we need to confirm it is of a

file type we want.
if (in_array ($_FILES['myfile']['type'],

$allowedtypes)){
//Then we can perform the copy.
if ($_FILES['myfile']['error'] == 0){


$savefolder = $username;
$thefile = $savefolder . "/" . $_FILES

['myfile']['name'];
if (!move_uploaded_file ($_FILES

['myfile']['tmp_name'], $_FILES

['myfile']['name'])){
echo "There was an error uploading

the file.";

}

smksmk
چهارشنبه 29 آبان 1392, 13:32 عصر
این هم کد کامل

<?php
header('Content-Type: text/html;charset=UTF-8');
$username=$_POST['user'];
$allowedtypes = array("image/jpeg","image/pjpeg","image/png","image/gif","sound/mp3");

if(isset($_FILES['myfile']))
{
if (in_array($_FILES['myfile']['type'],$allowedtypes))
{
if ($_FILES['myfile']['error'] == 0)
{

$savefolder = '/uploads';
$thefile = $savefolder . "/" . $_FILES['myfile']['name'];

if (!move_uploaded_file ($_FILES['myfile']['tmp_name'],iconv("UTF-8", "UTF-8", $_FILES['myfile']['name'])))
{
echo "There was an error uploading the file.";
}
}
}
}
?>

MMSHFE
چهارشنبه 29 آبان 1392, 13:44 عصر
$farsiName = iconv('utf-8', 'windows-1256', str_replace('ی', 'ي', str_replace('ک', 'ك', $_FILES['upload']['name'])));
دقت کنید که ادیتور برنامه نویس خوب نشون نمیده. همین کد رو کپی و توی برنامه خودتون Paste کنید و از farsiName$ بعنوان اسم فایل برای ذخیره سازی استفاده کنید تا فایل با اسم فارسی ذخیره بشه.

smksmk
چهارشنبه 29 آبان 1392, 13:55 عصر
اگه روی لوکال هاست داری تست میکنی این جواب میده که مدیر فرمودن :

$farsiName = iconv('utf-8', 'windows-1256', str_replace('ی', 'ي', str_replace('ک', 'ك', $_FILES['upload']['name'])));
اگه روی هاست لینوکسی میخای ببریش :

$farsiName = iconv('utf-8', 'utf-8', str_replace('ی', 'ي', str_replace('ک', 'ك', $_FILES['upload']['name'])));
یعنی کاراکتر ست دوم هم utf-8 باشه .
هردوی اینا هم به شرطیه که charset صفحه یا فرمی که داری اطلاعات رو میفرستی باهاش به این صفحه utf-8 باشه .