IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire / Safari (et Google Chrome) & fichier Word => $_FILES[file']['type'] vide


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut Formulaire / Safari (et Google Chrome) & fichier Word => $_FILES[file']['type'] vide
    Bonjour,

    je m'arrache les cheveux depuis hier avec Safari et Google Chrome pour uploader un fichier .doc...

    Je vous donne un aperçu du code généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <form enctype="multipart/form-data" action="http://serveurlocal/Passworld/admin/index.php?a=submitNewsletter" method="post">
    <div class="help">
         Sélectionnez la newsletter (format word ou pdf) que vous souhaitez envoyer à l'ensemble des membres.
    </div>
    <div class="label">
         Choisissez le fichier
    </div>
    <div class="input">
         <input type="hidden" name="MAX_FILE_SIZE" value="20000000" />
         <input name="file" type="file" />
    </div>
    <div class="submit">
         <input type="submit" value="Envoyer le fichier" />
    </div><div class="clearer">&nbsp;</div>
    </form>
    pour les fichiers PDF, pas de problèmes...
    mais alors, pour les fichiers Word, voilà un exemple de rendu de var_dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(5) { ["name"]=> string(23) "Le voilà ton texte.doc" ["type"]=> string(0) "" ["tmp_name"]=> string(23) "C:\wamp\tmp\phpA4AD.tmp" ["error"]=> int(0) ["size"]=> int(24064) }
    J'ai ajouté à la racine du projet un fichier .htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddType application/octet-stream .doc
    mais rien n'y fait...



    si vous avez une idée, je suis désespérément preneur...
    merci d'avance,
    Rolf

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    L'envoi des types MIME peut varier selon les navigateurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    le type mime reste vide malgré le .htaccess ?

    je vous joins le code de vérification du type de fichier (à défaut de FileInfo seulement fourni avec PHP 5.3), faut se débrouiller avec les moyens du bord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
            //verification
            if ($_FILES["file"]["error"] > 0) {
                echo "error";
    			$errors['file'] = "<span class='error_input'>*</span>";
            }
            //security issue : avoid null chars
            if(preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $_FILES["file"]["name"])) {
                echo "name";
                $errors['file'] = "<span class='error_input'>*</span>";
            }
            //getting the extension
            $extension = pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION);
            if($extension == "") {
                echo "name";
                $errors['file'] = "<span class='error_input'>*</span>";
            }
            //file size
            if(filesize($_FILES["file"]["tmp_name"]) > UPLOAD_MAX_SIZE) {
                echo "size";
                $errors['file'] = "<span class='error_input'>*</span>";
            }
     
     
    	if (!(($_FILES["file"]["type"] == "application/pdf") 
               /* .doc check begin */
               || (($_FILES["file"]["type"] == "application/msword") 
               ||  ($_FILES["file"]["type"] == "application/octet-stream")
               ||  ($_FILES["file"]["type"] == "application/vnd.ms-word"))
                    && $extension == "doc")) {
    	    echo "type";
                $errors['file'] = "<span class='error_input'>*</span>";
    	}

    donc, dans l'exemple précédent, il m'affiche "type", et évidemment, l'upload se fait pas...

    sinon, tant pis, je vais me baser que sur l'extension, c'est tout pourri, mais je vois pas trop d'autres solutions...

Discussions similaires

  1. Boutons dans un UpdatePanel sur Safari et Google Chrome
    Par Juju54350 dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 05/11/2010, 16h34
  2. compatibilité safari et google chrome
    Par sebac dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 26/04/2010, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo