2016-04-08 13 views
0

İlk dönmek is_uploaded_file. hemen önce, ben denemek bu:</p> <p>fonksiyon is_uploaded_file hep return false ... benim kötü İngiliz üzgün her zaman false

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

ve ekranı:

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 

Hata yok (0), klasör için 777 izin ... I (from: Why does image upload fail php's is_uploaded_file check?) realpath çalıştı, ancak hala çalışmıyor.

Tam Fonction: fonksiyonunun

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; 
    } 
    } 

Çağrı:

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

Teşekkür

+1

Olası kopyası [Neden resim yükleme başarısız oluyor php's \ _uploaded \ _file check nedir?] (Http://stackoverflow.com/questions/5202306/why-does-image-upload-fail-phps-is-uploaded -file-check) – Tom

+0

Aynı hata ama verilen çözüm benim için işe yaramıyor :) –

+0

Deneme is is is (dosya ['tmp_name']) 've' is_readable ($ dosya ['tmp_name']) ',' is_readable ('/ tmp /') '- bunlar hangi sonuçları verir? – CBroe

cevap

0

Bonjour, sorun buldum! Yine benim hatamdı! F5 ile otomatik geri dönüşlerden kaçınmak için her formun üstünde bir dosya ekliyorum.

<?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']); 
} 
?> 

Ama hala nedenini anlamıyorum, biri açıklayabilir mi?

İlgili konular