2014-10-25 2 views
0

У меня проблема с функцией move_uploaded_file.PHP - Move_uploaded_file перемещать файл с символами unintelligible

Проблема в том, что я загружаю арабский файл своими шоу с символами неразборчивыми.

взгляд на картине

image

+0

Показать код будет хорошим. Кроме того, если вы не можете найти решение проблемы, вы всегда можете переименовать свои файлы в числовой формат. Однако у вас есть проблема с кодировкой. –

+0

Попытайтесь с http://www.php.net/setlocale – Cheery

ответ

0

Не 100% уверен в этом, но вы пробовали кодирующее имя файла, когда вы получите строку из массива FILES?

http://php.net/manual/en/ref.url.php 
0

К счастью, есть библиотеки, чтобы решить эту проблему, как ar-php

<?php 
set_time_limit(0); 
require("connect.php"); 
include 'Arabic.php'; 
$arabic = new I18N_Arabic('Transliteration'); 
if (isset($_FILES['upload_file'])) { 
    foreach ($_FILES['upload_file']['tmp_name'] as $count => $upload_file) { 
     if (!empty($_FILES['image']['error'][$count])) { 
      // Some error occured with the file in index $count 
      // Put some error handling in here... 
      return false; // or you could continue; 
     } 

     if (!empty($upload_file) && is_uploaded_file($upload_file)) { 
      $charset = "AHfgG15Ds10MZD58N"; 
      $code = ''; 
      $length = 15; 
      for ($i = 0; $i <= $length; $i++) { 
       $rand = rand() % strlen($charset); 
       $tmp = substr($charset, $rand, 1); 
       $code .= $tmp; 
      } 
      mysql_query("SET NAMES utf8"); 
      $query = mysql_query("SELECT `code` FROM `files` WHERE `code`='$code'") or die(mysql_error()); 
      $numrows = mysql_num_rows($query); 

      while ($numrows != 0) { 
       $code = ''; 
       for ($i = 0; $i <= $length; $i++) { 
        $rand = rand() % strlen($charset); 
        $tmp = substr($charset, $rand, 1); 
        $code .= $tmp; 
       } 
       $query = mysql_query("SELECT `code` FROM `files` WHERE `code`='$code'"); 
       $numrows = mysql_num_rows($query); 
      } 
      $types = array('jpg', 'jpeg', 'gif', 'png', 'zip', 'rar', 'mp3', 'm4a', 'wmv', 'divx', 'mp4', 
          'flv', 'FLV', 'dvd', 'mkv', 'bmp', 'xml', 'doc', 'pdf', 'xls', 'psd', 'svg', 
          '3gp', 'ppt', 'txt', 'exe', 'mpeg', 'dvdrip'); 

      $names = pathinfo($_FILES['upload_file']['name'][$count]); 
      if (in_array($names['extension'], $types)) { 
       mkdir("upload/$code/"); 
       $name = trim($arabic->ar2en($_FILES["upload_file"]["name"][$count])); 
       $type = $_FILES["upload_file"]["type"][$count]; 
       $size = $_FILES["upload_file"]["size"][$count]; 
       $tmp_name = $_FILES["upload_file"]["tmp_name"][$count]; 
       if ($size < 600000000) { 
        $site_url = ('http://localhost'); 
        $url = ("$site_url/download.php?file=$code"); 
        mysql_query("SET NAMES utf8"); 
        $query = mysql_query("INSERT INTO files VALUES ('Null','$name','$code','$type','$size','$url')"); 
        $url = urlencode($name); 
        if ($upload = move_uploaded_file($upload_file, "upload/$code/" . $name)) { 

         if ($upload) { 
          ?> 
          <table> 
           <tr> 
            <td><h3>File name</h3></td> 
            <td><h3>File Link</h3></td> 
            <td><h3>File Type</h3></td> 
           </tr> 
           <tr> 
            <td><?php echo "$name"; ?></td> 
            <td> 
             <?php echo "<a href='http://localhost/downoald.php?file=$code' target='_blanck'>File Link</a>"; ?> 
            </td> 
            <td><?php print_r($names['extension']); ?></td> 
           </tr> 
          </table> 
         <?php } else { ?> 
          No file selected 
         <?php 
         } 

        } else { 
         echo "A problem occurred while uploading your file(s), please try again."; 
        } 
       } else { 
        echo "This file(s) is up to 1GB<br>"; 
       } 
      } else { 
       echo "Type of the file not allowed"; 
      } 
     } else { 
      echo "this error is fan"; 
     } 
    } 
} 
?> 
+0

спасибо я напишу свой код ответы на это сообщение отредактировал –

+0

«PHP 5 не способен ...», «Вот библиотека, написанная на PHP 5, которая делает только то." Errr ...?! – deceze

+0

@deceze Я имел в виду без библиотеки, я не настолько совершенен на английском языке bro – meda

0

Спасибо @meda это мой код, пожалуйста

Сложение Роде, которые были посланы мне

<?php 
set_time_limit(0); 
require("connect.php"); 
if (isset($_FILES['upload_file'])) { 
    foreach ($_FILES['upload_file']['tmp_name'] as $count=>$upload_file) { 
      if (!empty($_FILES['image']['error'][$count])) { 
      // Some error occured with the file in index $count 
      // Put some error handling in here... 
      return false; // or you could continue; 
     } 

     if (!empty($upload_file)&&is_uploaded_file($upload_file)) { 
    $charset="AHfgG15Ds10MZD58N"; 
      $code=''; 
      $length=15; 
      for ($i=0; $i<=$length; $i++) { 
       $rand=rand()%strlen($charset); 
       $tmp=substr($charset,$rand,1); 
       $code.=$tmp; 
      } 
      mysql_query("SET NAMES utf8"); 
      $query=mysql_query("SELECT `code` FROM `files` WHERE `code`='$code'") or die(mysql_error()); 
      $numrows=mysql_num_rows($query); 

      while ($numrows!=0) { 
       $code=''; 
       for ($i=0; $i<=$length; $i++) { 
        $rand=rand()%strlen($charset); 
        $tmp=substr($charset,$rand,1); 
        $code.=$tmp; 
       } 
       $query=mysql_query("SELECT `code` FROM `files` WHERE `code`='$code'"); 
       $numrows=mysql_num_rows($query); 
      } 
      $types = array('jpg','jpeg','gif','png','zip','rar','mp3','m4a','wmv','divx','mp4','flv','FLV','dvd','mkv','bmp','xml','doc','pdf','xls','psd','svg','3gp','ppt','txt','exe','mpeg','dvdrip'); 
      $names = pathinfo($_FILES['upload_file']['name'][$count]); 
      if (in_array($names['extension'],$types)) { 
      mkdir("upload/$code/"); 
      $name=$_FILES["upload_file"]["name"][$count]; 
      $type=$_FILES["upload_file"]["type"][$count]; 
      $size=$_FILES["upload_file"]["size"][$count]; 
      $tmp_name=$_FILES["upload_file"]["tmp_name"][$count]; 
      if ($size < 600000000) 
      { 
      $site_url=('http://localhost'); 
      $url= ("$site_url/download.php?file=$code"); 
      mysql_query("SET NAMES utf8"); 
      $query=mysql_query("INSERT INTO files VALUES ('Null','$name','$code','$type','$size','$url')"); 
      $url=urlencode($name); 
      if($upload = move_uploaded_file($upload_file ,"upload/$code/".$name)) 
      { 

      if ($upload) { ?> 
       <table> 
       <tr> 
       <td><h3>File name</h3></td><td><h3>File Link</h3></td><td><h3>File Type</h3></td> 
       </tr> 
       <tr> 
       <td><?php echo"$name"; ?></td><td> <?php echo"<a href='http://localhost/downoald.php?file=$code' target='_blanck'>File Link</a>"; ?></td><td><?php print_r ($names['extension']); ?></td> 
       </tr> 
       </table> 
      <?php } else { ?> 
       No file selected 
      <?php } 

         }else{ 
      echo "A problem occurred while uploading your file(s), please try again."; 
      } 
      }else{ 
      echo "This file(s) is up to 1GB<br>"; 
      } 
}else{ 
echo "Type of the file not allowed"; 
} 
}else{ 
echo "this error is fan"; 
} 
} 
} 
?> 
+0

Вы должны использовать кнопку ответов только для публикации ответов, но что не так с этим кодом – meda

+0

, пожалуйста, отредактировал мой код. моя проблема - файлы (арабские) сохранить в базе данных и перемещаться в папку с символами-непонятно –

+0

Вам нужно реализовать код, который я вам дал, и вы должны сказать мне, что пошло не так, если вы столкнулись с проблемой – meda

Смежные вопросы