Partage

Upload d'image sur telephone

Sujet résolu
21 juin 2018 à 12:32:24

Salut, j'essaye de faire une page qui permet au utilisateur d'envoyer une image sur mon serveur, tout fonctionne sur PC, mais pas sur téléphone. Mon site étant adapter pour téléphone c'est assez contraignant. Je ne sais pas pourquoi les images ne sont pas envoyer au serveur quand je le fait via mon téléphone. Voici le code de la page :

<?php session_start(); ?>
<!DOCUMENT HTML>
<html>

<head>
    <title> Quicknow </title>
    <meta charset="UTF-8" />
</head>

<body>
    <article>
        <?php
/*RECUPERATION DES VALEURS RENTREES DANS LE FORMULAIRE*/        
  $msg     = "";
  $titre   = $_POST["titre"];
  $cat     = $_POST["cat"];
  $desc    = $_POST["desc"];
  $prix    = $_POST["prix"];
  $date    = new DateTime();
  $datelim = $_POST["datelim"];
  $idc     = $_SESSION['monlogin'];             
  /*CONNEXION A LA BDD*/           
  $db = mysqli_connect ( "******" , "*****" , "***" , "***" );       
  /*INSERTION DES DONNEES RENTREES DANS LE FORMULAIRE VERS LA BDD*/  
  $Requete = "INSERT INTO article (categorie,titre,des,prix,date,datelim,nbpa,idc) 
              VALUES ('$cat','$titre','$desc','$prix',NOW(),'$datelim','0',$idc); " ;

  $Resultat = mysqli_query ( $db, $Requete , MYSQLI_USE_RESULT )  or  die(mysql_error() ) ;

    echo mysqli_insert_id($db);    
             
  /*RECUPERATION DE L ID ARTICLE CREER PAR LA REQUETE PRECEDENTE*/
    $ida=mysqli_insert_id($db);    
             
        
    $target_dir = "../photo/";
    $_FILES["fileToUpload"]["name"] = $idc.$ida."1.jpg";
    $_FILES["fileToUpload2"]["name"] = $idc.$ida."2.jpg";
    $_FILES["fileToUpload3"]["name"] = $idc.$ida."3.jpg";    
    $target_file  = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $target_file2 = $target_dir . basename($_FILES["fileToUpload2"]["name"]);
    $target_file3 = $target_dir . basename($_FILES["fileToUpload3"]["name"]);    
    $uploadOk = 1;
    $imageFileType  = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    $imageFileType2 = strtolower(pathinfo($target_file2,PATHINFO_EXTENSION));
    $imageFileType3 = strtolower(pathinfo($target_file3,PATHINFO_EXTENSION));    
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}1";
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
        
        
    /*Image 2*/
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload2"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file2)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload2"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType2 != "jpg" && $imageFileType2 != "png" && $imageFileType2 != "jpeg"
    && $imageFileType2 != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}2";
        if (move_uploaded_file($_FILES["fileToUpload2"]["tmp_name"], $target_file2)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload2"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }

        
   /*Image 3*/
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload3"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file3)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload3"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType3 != "jpg" && $imageFileType3 != "png" && $imageFileType3 != "jpeg"
    && $imageFileType3 != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}3";
        if (move_uploaded_file($_FILES["fileToUpload3"]["tmp_name"], $target_file3)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload2"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }         
        
  mysqli_close ( $db ) ;

echo '<script>window.location.href="client_main";</script>'; 
?>

    </article>
</body>

</html>

Merci de votre attention :) 

-
Edité par BalouLeKangourou 21 juin 2018 à 12:33:11

Vous êtes demandeur·se d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur·se web junior

Je postule
Formation
courte
Financée
à 100%
21 juin 2018 à 14:27:50

Bonjour,

Ligne 173 tu as l'air de faire appel à du javascript.

C'est une piste à explorer car le js est-il activé ? et fonctionne t-il ?

Par ailleurs, as tu mis des traces sur le code côté serveur pour voir si le code buggait à un endroit ?

A+

21 juin 2018 à 14:49:50

Oui ligne 173 j'utiliser un header(location:) mais ca ne fonctionnait pas et j'ai trouver ce script js qui fonctionne, et du coup oui le js fonctionne. Parc ontre je débute du coup je comprend pas trop ce que tu veux dire par "mis des traces sur le code cote serveur pour voir si le code bugait à un endroit".
21 juin 2018 à 14:57:24

BalouLeKangourou a écrit:

Oui ligne 173 j'utiliser un header(location:) mais ca ne fonctionnait pas et j'ai trouver ce script js qui fonctionne, et du coup oui le js fonctionne. Parc ontre je débute du coup je comprend pas trop ce que tu veux dire par "mis des traces sur le code cote serveur pour voir si le code bugait à un endroit".


Mettre des trace == faire des echo dans un fichier (ou à l'affichage) pour savoir où passe le script quand tu l'appelles.
"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
21 juin 2018 à 14:59:39

Du coup voici les messages d'erreurs : 

De ce que je comprend il reconnait pas l'image comme une image mais du coup je sais pas comment régler ce problème...

-
Edité par BalouLeKangourou 21 juin 2018 à 15:30:34

22 juin 2018 à 6:41:00

Bon, les traces c'est fait ! Elle montre que la communication ne fonctionne pas entre le terminal et le smartphone.

A titre d'info pour toi, tu devrais regarder les mêmes traces avec ton PC. Cela te permettra de comprendre tout l'intérêt de mettre des traces dans un développement.

Pour le js ce n'est pas parce que le javascript fonctionne sur ton PC avec ton navigateur qu'il fonctionne sur un smartphone ou sur une tablette.

Il faut bien savoir que le javascript s'exécute sur le navigateur donc côté client. Alors il se peut :

que le javascript soit désactivé sur ton smartphone (c'est assez courant) à vérifier

que le code javascript que tu utilises ne fonctionne pas sur ton smartphone.

Tu utilises quel navigateur sur ton smartphone ?

A+

-
Edité par monkey3d 22 juin 2018 à 6:43:29

22 juin 2018 à 10:03:51

Salut, j'utilise opera sur mon smartphone, mais je ne vois pas le rapport avec le javascript, je l'utilise seulement pour la redirection et non pour l'envoi des images, d'ailleurs si le client devait activer le js sur son téléphone pour utiliser le site ce serait contraignant :/

J'ai fait d'autres recherches etc mais je ne trouve rien en rapport avec mon problemes, du coup j'ai fait d'autre test et ce qui en ressort c'est que quand j'envoi une image de mon telephone elle est bien envoyer puisque je fait un echo $_FILES["fileToUpload"]["name"]; et que cela me retourne bien le nom du fichier, un truc du genre 25498216687.png mais ce n'est pas reconnu comme un fichier, pourtant le png est bien dans mes condition, du coup j'ai essayer de faire pareil depuis le PC d'ou j utilise aussi opera, en renomment une photo de la même façon pour voir si cela ne viens pas du fait que la photo à un nom avec des numéros mais ca fonctionne bien sur le PC, bref je n'y comprend plus rien et je suis perdu. Je me dit que ca vient peut être du fait que le navigateur téléphone ne trouve pas la photo dans les fichiers temporaires mais j'en sais trop rien et je ne saurait pas comment régler le problème si ca venait de la :/

Je vient d'essayer avec chrome sur smartphone et ca me fait pareil : Warning: getimagesize(): Filename cannot be empty in /homepage/1/d207455745/htdocs/clickandbuilds/quicknow/page/client_addarticle2.php on line 50

File is not an image.Sorry your file was not uploaded.

-
Edité par BalouLeKangourou 22 juin 2018 à 14:09:03

22 juin 2018 à 10:19:01

BalouLeKangourou a écrit:

Warning: getimagesize(): Filename cannot be empty in /homepage/1/d207455745/htdocs/clickandbuilds/quicknow/page/client_addarticle2.php on line 50

File is not an image.Sorry your file was not uploaded.


L'erreur est très claire. A la ligne 50, la variable que tu fournies à ta fonction getimagesize(); est vide. De fait, ton check de dessous, qui vérifie si le résultat de la fonction getimagesize(); est true ou false, va t'afficher le message du cas où c'est "false". Donc "File is not an image."

Essaie de tracer le contenu de ta variable $_FILES["fileToUpload"]["tmp_name"]; voir ce qu'elle contient...

-
Edité par Darev 22 juin 2018 à 10:20:19

22 juin 2018 à 10:19:04

// Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }

 Certains formats peuvent ne contenir aucune image, ou bien plusieurs. Dans ces cas-là, getimagesize() peut ne pas être capable de déterminer correctement la taille de l'image. getimagesize() retourne alors zéro comme taille de hauteur et largeur.

$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
  header("Content-type: {$size['mime']}");
  fpassthru($fp);
  exit;
} else {
  // error
}

 sa serai pas plutôt un truck comme sa pour vérifier avec le mime ?

autrement fait un var_dump($check); voir ce que sa donne 

-
Edité par FabianHrd 22 juin 2018 à 10:22:51

22 juin 2018 à 10:22:44

Ok donc pas le js en cause mais comme on ne pouvait deviner ce que tu faisais avec ton appel js. ;)

Quand tu dis que sur PC cela fonctionne, est-ce que le PC avec lequel tu testes côté navigateur est le même que le PC qui a le serveur web ?

Si oui, tu pourrais tester avec un PC navigateur qui ne soit pas le PC du serveur web ?

A+

-
Edité par monkey3d 22 juin 2018 à 11:11:24

22 juin 2018 à 11:05:34

-

-
Edité par christouphe 22 juin 2018 à 11:08:22

"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
22 juin 2018 à 11:30:48

Du coup j'ai rajouter :

 echo "TMP ".$_FILES["fileToUpload"]["tmp_name"]." TMP";

Et quand j'envoi du pc ca m'affiche bien le nom du ficheir temporaire mais pas avec le téléphone, rien ne s'affiche hormis 'TMP  TMP'

Ensuite j'ai essayer le code de FabianHrd

j'ai fait :

<?php session_start(); ?>
<!DOCUMENT HTML>
<html>

<head>
    <title> Quicknow </title>
    <meta charset="UTF-8" />
</head>

<body>
    <article>
        <?php
/*RECUPERATION DES VALEURS RENTREES DANS LE FORMULAIRE*/        
  $msg     = "";
  $titre   = $_POST["titre"];
  $cat     = $_POST["cat"];
  $desc    = $_POST["desc"];
  $prix    = $_POST["prix"];
  $date    = new DateTime();
  $datelim = $_POST["datelim"];
  $idc     = $_SESSION['monlogin'];             
  /*CONNEXION A LA BDD*/           
  $db = mysqli_connect ( "db740956876.db.1and1.com" , "dbo740956876" , "CA&LL!28_17!" , "db740956876" );       
  /*INSERTION DES DONNEES RENTREES DANS LE FORMULAIRE VERS LA BDD*/  
  $Requete = "INSERT INTO article (categorie,titre,des,prix,date,datelim,nbpa,idc) 
              VALUES ('$cat','$titre','$desc','$prix',NOW(),'$datelim','0',$idc); " ;

  $Resultat = mysqli_query ( $db, $Requete , MYSQLI_USE_RESULT )  or  die(mysql_error() ) ;

    echo mysqli_insert_id($db);    
             
  /*RECUPERATION DE L ID ARTICLE CREER PAR LA REQUETE PRECEDENTE*/
    $ida=mysqli_insert_id($db);    
             
        
    $target_dir = "../photo/";
    $_FILES["fileToUpload"]["name"] = $idc.$ida."1.jpg";
    $_FILES["fileToUpload2"]["name"] = $idc.$ida."2.jpg";
    $_FILES["fileToUpload3"]["name"] = $idc.$ida."3.jpg";    
    $target_file  = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $target_file2 = $target_dir . basename($_FILES["fileToUpload2"]["name"]);
    $target_file3 = $target_dir . basename($_FILES["fileToUpload3"]["name"]);    
    $uploadOk = 1;
    $imageFileType  = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    $imageFileType2 = strtolower(pathinfo($target_file2,PATHINFO_EXTENSION));
    $imageFileType3 = strtolower(pathinfo($target_file3,PATHINFO_EXTENSION));    
   // Check if image file is a actual image or fake image
        echo $_FILES["fileToUpload"]["name"];
        echo "TMP ".$_FILES["fileToUpload"]["tmp_name"]." TMP";
        $size = getimagesize($filename);
        $fp = fopen($filename, "rb");
        if ($size && $fp) {
        header("Content-type: {$size['mime']}");
        fpassthru($fp);
        $oploadOK = 1;    
        exit;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
               }
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}1";
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
        
        
    /*Image 2*/
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload2"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file2)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload2"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType2 != "jpg" && $imageFileType2 != "png" && $imageFileType2 != "jpeg"
    && $imageFileType2 != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}2";
        if (move_uploaded_file($_FILES["fileToUpload2"]["tmp_name"], $target_file2)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload2"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }

        
   /*Image 3*/
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload3"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file3)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload3"]["size"] > 3000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType3 != "jpg" && $imageFileType3 != "png" && $imageFileType3 != "jpeg"
    && $imageFileType3 != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}3";
        if (move_uploaded_file($_FILES["fileToUpload3"]["tmp_name"], $target_file3)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload2"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }         
        
  mysqli_close ( $db ) ;

/*echo '<script>window.location.href="client_main";</script>';*/ 
?>

    </article>
</body>

</html>



et ca fonctionne pas, l'erreur afficher est la suivante (c'est la même chose sur téléphone et PC) :

Warning: getimagesize(): Filename cannot be empty in /homepages/1/d207455745/htdocs/clickandbuilds/quicknow/page/client_addarticle2.php on line 50

Warning: fopen(): Filename cannot be empty in /homepages/1/d207455745/htdocs/clickandbuilds/quicknow/page/client_addarticle2.php on line 51
File is not an image.Sorry, your file was not uploaded.

Pour ce qui est du serveur web il est chez 1&1 et du coup je suppose qu'il est pas sur mon PC.

J'ai essayer sur un autre PC chez moi et ca marche parfaitement.

En tout cas merci de vos réponses <3

-
Edité par BalouLeKangourou 22 juin 2018 à 15:16:30

22 juin 2018 à 15:53:24

BalouLeKangourou a écrit:

Du coup j'ai rajouter :

 echo "TMP ".$_FILES["fileToUpload"]["tmp_name"]." TMP";

Et quand j'envoi du pc ca m'affiche bien le nom du ficheir temporaire mais pas avec le téléphone, rien ne s'affiche hormis 'TMP  TMP'


Ça sous-entend que ta variable $_FILE serait vide... ou ne contient pas le tableau que tu attends. Fais un print_r($_FILES["fileToUpload"]); plutôt qu'un echo. Tu verras tout de suite si c'est un bien un tableau ou non.

-
Edité par Darev 22 juin 2018 à 15:59:57

22 juin 2018 à 16:08:50

J'ai fait deux test avec print_r($_FILES["fileToUpload"]);

Voici ce que ca donne sur PC :

Array ( [name] => 216080871251.jpg [type] => image/jpeg [tmp_name] => /tmp/phpmSi5Gf [error] => 0 [size] => 41992 ) 

Et sur téléphone : 

Array([name] => 216080871261.jpg[type] => [tmp_name] => [error] => 1[size] => 0)


Du coup si je comprend bien c'est bien ce que je pensais, le problème vient des fichiers temporaires :/

22 juin 2018 à 16:12:38

non le problème vient du navigateur sur le téléphone qui ne donne pas toutes les informations au formulaire d'upload ;) Car ton form fonctionne avec le PC, donc ce n'est pas le serveur mais le client qui foire, ce que je dis depuis le départ.
"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
22 juin 2018 à 16:14:53

Pourtant j'ai aussi essayer avec chrome et ca ne fonctionnait pas non plus, du coup je vois toujours pas comment régler le probleme.
22 juin 2018 à 16:18:03

chrome sur PC == KO

chrome sur tél == KO

ff sur PC == OK

=> change de navigo ;)

"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
22 juin 2018 à 16:20:56

BalouLeKangourou a écrit:

Et sur téléphone : 

Array([name] => 216080871261.jpg[type] => [tmp_name] => [error] => 1[size] => 0)


Du coup si je comprend bien c'est bien ce que je pensais, le problème vient des fichiers temporaires :/


Error => 1

Moi je pense que ça vient de ton fichier image plus que du navigateur. As-tu testé d'autres images ? Notamment, des moins grosses/lourds en poids ?

christouphe a écrit:

non le problème vient du navigateur sur le téléphone qui ne donne pas toutes les informations au formulaire d'upload ;) Car ton form fonctionne avec le PC, donc ce n'est pas le serveur mais le client qui foire, ce que je dis depuis le départ.


J'ai du mal à comprendre ta logique. Comment le téléphone ne donnerait pas toute les infos au formulaire ? C'est un traitement serveur là le résultat de $_FILE, non ? Pour moi ça serait le fichier utilisé qui est merdique.

(c'est une vraie question hein, je précise ;) ).

22 juin 2018 à 16:22:11

Dans tout les cas le site est destiné à une clientelle non qualifié donc si ils sont obliger de changer de navigateur pour upload une image c est dommage, il doit bien un moyen de faire fonctionner le truc
22 juin 2018 à 16:23:59

Darev a écrit:

BalouLeKangourou a écrit:

Et sur téléphone : 

Array([name] => 216080871261.jpg[type] => [tmp_name] => [error] => 1[size] => 0)


Du coup si je comprend bien c'est bien ce que je pensais, le problème vient des fichiers temporaires :/


Error => 1

Moi je pense que ça vient de ton fichier image plus que du navigateur. As-tu testé d'autres images ? Notamment, des moins grosses/lourds en poids ?

christouphe a écrit:

non le problème vient du navigateur sur le téléphone qui ne donne pas toutes les informations au formulaire d'upload ;) Car ton form fonctionne avec le PC, donc ce n'est pas le serveur mais le client qui foire, ce que je dis depuis le départ.


J'ai du mal à comprendre ta logique. Comment le téléphone ne donnerait pas toute les infos au formulaire ? C'est un traitement serveur là le résultat de $_FILE, non ? Pour moi ça serait le fichier utilisé qui est merdique.

(c'est une vraie question hein, je précise ;) ).


Pas le tél, le navigateur, c'est une hypothèse, mais comme ça merde aussi sur son PC avec le même navigo ;)
"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
22 juin 2018 à 16:38:01

Ca fonctionne sur PC, la seul fois ou ca n'as pas fonctionner c est avec le code de FabianHrd.

D'ailleurs je vient de ré essayer avec d'autre navigateurs sur téléphone, ca fonctionne ni sur opera ni sur chrome ni sur firefox

-
Edité par BalouLeKangourou 22 juin 2018 à 16:57:25

22 juin 2018 à 16:59:20

Et donc, t'as testé avec d'autres images ?

Le code erreur "1" correspondrait à ce que je te disais sur ta taille de fichier. Voir ici, ça devrait t'aider : http://php.net/manual/fr/features.file-upload.errors.php

-
Edité par Darev 22 juin 2018 à 17:00:43

22 juin 2018 à 17:03:43

En effet c'est possible étant donné que j'ai utiliser des photo prise avec mon téléphone il se peu qu'elle soit trop lourde mais je ne vois pourquoi ca dirais que l'image n'as pas de nom du coup mais je vais creuser de ce coté quand meme ;)
22 juin 2018 à 17:18:21

BalouLeKangourou a écrit:

En effet c'est possible étant donné que j'ai utiliser des photo prise avec mon téléphone il se peu qu'elle soit trop lourde mais je ne vois pourquoi ca dirais que l'image n'as pas de nom du coup mais je vais creuser de ce coté quand meme ;)


Oui, tu devrais creuser... et étudier la différence entre post_max_size et upload_max_filesize aussi.

-
Edité par Darev 22 juin 2018 à 17:18:32

22 juin 2018 à 17:34:49

Ah parce que les tests ne sont pas avec la même photo ? ... pour tester c'est bien de ne pas changer plusieurs paramètres en même temps car après bec dans l'eau pour savoir ce qui ne va pas.

Donc effectivement c'est peut-être une piste si la taille des photos est supérieure à la limite d'un paramètre indiquée ci-dessus par Darev.

Donc voir ces paramètres et faire un test avec la photo qui passe sur PC.

A+

26 juin 2018 à 10:20:51

J ai enlever la limite de poids et ca fonctionne toujours pas :/

J'ai créer un php.ini dans le répertoire ou se trouve mon script et j'y ai mit ceci :

file_uploads = On

post_max_size = 999999999

max_file_uploads = 30


Mais rien n'y fait ca ne fonctionne toujours pas sur téléphone.

J'ai aussi essayer avec ca dans le script :


ini_set("post_max_size", "999999999");       

ini_set("max_file_uploads", "30");

Mais ca ne fonctionne pas non plus.

-
Edité par BalouLeKangourou 26 juin 2018 à 10:43:04

26 juin 2018 à 10:48:47

Ce qui ne répond pas à la question : as tu essayé le upload par le téléphone avec la photo qui fonctionne sur PC ?

Les paramètres du php.ini à modifier sont :

post_max_size = 8M

la syntaxe 9999 .... je ne sais si elle fonctionne :  la mienne c'est sûre et elle veut dire 8 méga-octets.

Il faut aussi modifier le paramètre :

upload_max_filesize = 8M

Le 8M est à titre d'exemple ...

Il faut s'assure que l'on modifie bien le php.ini qui est utilisé (il arrive que sur une machine il y ait plusieurs php.ini) et ensuite il faut relancer apache pour que les nouveaux paramètres soient pris en compte.

A+

26 juin 2018 à 10:56:21

Je suis herberger chez 1&1 du coup j'ai pas accés au php.ini vu que le serveur est mutualisé.

Je viens de changer avec 8M et ca ne fonctionne pas.

J'ai déjà essayer avec un photo de mon téléphone sur PC et ca fonctionnais, je pouvais l'envoyer depuis le PC mais pas depuis le téléphone.

-
Edité par BalouLeKangourou 26 juin 2018 à 10:58:29

26 juin 2018 à 13:43:06

Je te demande la manip inverse ... tu prends la photo depuis ton PC qui fonctionne, tu l'as met sur ton téléphone et tu essayes l'upload à partir de ton téléphone.

Pour modifier les paramètres de php :

soit tu as accès au php.ini du système (et non de créer un fichier php.ini dans le répertoire de ton script où nous sommes sûrs il ne sert à rien)

soit tu essayes en mettant dans ton script les instructions ini_set qui permettent de modifier les options de configuration. cf les 2 lignes à minima que je t'ai indiqué.

http://php.net/manual/fr/function.ini-set.php

A+

26 juin 2018 à 14:41:50

Je viens d'essayer, j'ai envoyer une image du PC sur mon tel et ca fonctionne, et j'ai réessayer avec une image prise depuis le téléphone en allant la chercher après dans les fichier et ce ne fonctionne pas, ca doit être a cause du poids mais j'arrive pas à régler le problème.

  /*RECUPERATION DE L ID ARTICLE CREER PAR LA REQUETE PRECEDENTE*/
    $ida=mysqli_insert_id($db);    
    ini_set('post_max_size', '8M');     
    ini_set('max_file_uploads', '7M');        
        
    $target_dir = "../photo/";
    $_FILES["fileToUpload"]["name"] = $idc.$ida."1.jpg";
    $_FILES["fileToUpload2"]["name"] = $idc.$ida."2.jpg";
    $_FILES["fileToUpload3"]["name"] = $idc.$ida."3.jpg";    
    $target_file  = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $target_file2 = $target_dir . basename($_FILES["fileToUpload2"]["name"]);
    $target_file3 = $target_dir . basename($_FILES["fileToUpload3"]["name"]);    
    $uploadOk = 1;
    $imageFileType  = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    $imageFileType2 = strtolower(pathinfo($target_file2,PATHINFO_EXTENSION));
    $imageFileType3 = strtolower(pathinfo($target_file3,PATHINFO_EXTENSION));    
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "<br>File is an image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "File is not an image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 300000000000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
    } else {
        $nom = "photo/{$idc}{$ida}1";
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<br>The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }

Malgré ces 2 lignes ca ne fonctionne pas :/

J'ai fait un phpinfo() et mon php.ini est bien charger et les lignes de codes suivantes sont pourtant bien prises en compte :

file_uploads = On

post_max_size = 8M

max_file_uploads = 7M

-
Edité par BalouLeKangourou 26 juin 2018 à 14:55:57

Upload d'image sur telephone

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown