2016-04-08 8 views
0

最初に、私の悪い英語のために申し訳ありません...is_uploaded_file返信常に偽

関数is_uploaded_fileは常にfalseを返します。私は(から:Why does image upload fail php's is_uploaded_file check?)のrealpathを試してみました

array(5) { ["name"]=> string(11) "cp_0001.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpmg5V5o" ["error"]=> int(0) ["size"]=> int(317616) } 
/tmp/phpmg5V5o 

エラーなしフォルダ(0)、777許可... :しかし、

var_dump($file); 
echo "<br>".$file['tmp_name']; 

と表示: ちょうど前に、私はこれを試してみてくださいまだ動作しません。

全fonction:

function fileUpload($file, $path_dir, $max_size) 
    { 
    var_dump($file); 
    echo "<br>".$file['tmp_name']; 
    // Si le fichier a bien été upload sur le serveur 
    if(is_uploaded_file($file['tmp_name'])) 
    { 
     // Si il n'y a pas de caractères invalides 
     if(preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $file['tmp_name'])) 
     { 
     // Si il n'y a pas d'erreurs lors d'upload 
     if($file['error'] == 0) 
     { 
      // Si la taille est < $max_size 
      if($file['size'] <= $max_size) 
      { 
      $infosfichier = pathinfo($file['name']); 
      $extension_upload = $infosfichier['extension']; 
      $extensions_autorisees = array('jpg', 'jpeg', 'png'); 
      // Si l'extension est autorisé 
      if(in_array($extension_upload, $extensions_autorisees)) 
      {     
       // Si le fichier a bien été déplacé  
       global $max_id; 
       $dest = $path_dir.'even_'.$max_id['max'].'.'.$extension_upload; 
       if(move_uploaded_file($file['tmp_name'], $dest)) 
       return true;      
       else 
       { 
       $_SESSION['erreur'] = "Erreur lors de l'upload : ".$dest; 
       return false;         
       } 
      } else 
      { 
       $_SESSION['erreur'] = "Le fichier dois etre une image au format JPG/JPEG/PNG"; 
       return false;          
      } 
      } else 
      { 
      $_SESSION['erreur'] = "Fichier supérieur a ".$max_size." Ko."; 
      return false; 
      } 
     } else 
     { 
      $_SESSION['erreur'] = "Erreur de l'envoi de la photo."; 
      return false; 
     } 
     } else 
     { 
     $_SESSION['erreur'] = "Nom de fichier invalide"; 
     return false; 
     } 
    } else 
    { 
     $_SESSION['erreur'] = "Erreur lors de la vérification du fichier"; 
     return false; 
    } 
    } 
機能の

コール:

if(isset($_FILES['photo']) AND !empty($_FILES['photo']['name'])) 
    $var = fileUpload($_FILES['photo'],'banniere/','512000'); 

おかげ

+1

[画像アップロードに失敗したのはなぜですか?\ _uploaded \ _fileチェックはなぜですか?](http://stackoverflow.com/questions/5202306/why-does-image-upload-fail-phps-is-uploaded -file-check) – Tom

+0

同じエラーですが、与えられた解決策は私のためには機能しません:) –

+0

'is_file($ file ['tmp_name'])'と 'is_readable($ file ['tmp_name'])'、 'is_readable ( '/ tmp /') ' - どのような結果が得られますか? – CBroe

答えて

0

ボンジュール、 私は問題を発見!もう一度私のせいでした! 私は各フォームの先頭にファイルを含めて、とF5の自動返品を避けます。

<?php 
if(!empty($_POST) OR !empty($_FILES)) 
{ 
    $_SESSION['sauvegarde'] = $_POST ; 
    $_SESSION['sauvegardeFILES'] = $_FILES ; 

    $fichierActuel = $_SERVER['PHP_SELF'] ; 
    if(!empty($_SERVER['QUERY_STRING'])) 
    { 
     $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ; 
    } 
    header('Location: ' . $fichierActuel); 
    exit; 
} 

if(isset($_SESSION['sauvegarde'])) 
{ 
    $_POST = $_SESSION['sauvegarde'] ; 
    $_FILES = $_SESSION['sauvegardeFILES'] ; 

    unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']); 
} 
?> 

しかし、私はまだなぜ、誰かが説明することができないのですか? Tjks

関連する問題