Page 1 sur 1

probleme recuperation image

Posté : 24 mai 2007, 14:13
par adel
bonjour

je ne conprend pas pourquoi ca ne marche pas il me repond
The requested URL /envoi recp base image/tansfert.php was not found on this server.

alors que le fichier php je l'ai intitule transfert.php
<html>
<head>
<title>Stock d'images</title>
</head>
<body>
<h3>Envoi d'une image</h3>
<form enctype="multipart/form-data" action="tansfert.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<input type="submit" value="Envoyer" />
</form>
</body>
</html>

<?
function transfert ()
{
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 250000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "Problème de transfert";
return false;
}
else
{
// Le fichier a bien été reçu
$img_taille = $_FILES['fic']['size'];
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];
}
}
?>

Posté : 24 mai 2007, 17:40
par Zolmitriptan
tansfert.php
Manque vraiment un R ou erreur de copier/coller ??

S'il manque vraiment un R ca expliquerai le fait qu'il trouve pas l'URL :D

Edit : pense au balise code /code

Posté : 24 mai 2007, 17:51
par Cyrano
Modération :
adel, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: probleme recuperation image

Posté : 24 mai 2007, 18:58
par dunbar
Il est ou ton dossier de destination :?:

Posté : 24 mai 2007, 19:31
par Cyrano
Je crois que dans un premier temps, il y a un problème avec l'attribut action de ta balise <form>

Voici ta page refaite de fond en comble. Je l'ai largement commentée, lis chaque détail et teste là quand tu auras complété le gros manque....
<?php
/**
 * D'abord on récupère l'adresse de la page en cours,
 * Comme ça, on se fout du nom du fichier, ce sera toujours le bon.
 */
$url_action = $_SERVER['PHP_SELF'];
/**
 * On crée le code du formulaire dont on aura ou non besoin selon le cas
 * ATTENTION : ici, on utilise la syntaxe HEREDOC : le contenu de la 
 * variable se trouve entre "<<<HTML" et "HTML;"  et ce dernier doit 
 * impérativement se trouver au début de la ligne.
 * Un avantage de cette méthode, c'est qu'on supprime les conflits 
 * d'apostrophes ou de guillemets du code HTML et du code PHP et les
 * variables PHP sont correctement interprétées.
 */
$code_formulaire = <<<HTML
    <form enctype="multipart/form-data" action="{$url_action}" method="post"> 
      <input type="hidden" name="MAX_FILE_SIZE" value="250000" /> 
      <input type="file" name="fic" size=50 /> 
      <input type="submit" name="envoi" value="Envoyer" /> 
    </form> 

HTML;
/**
 * Fonction de traitement de l'envoi de fichier
 *
 * Cette fonction va vérifier que l'envoi est valide et renverra au choix :
 * - TRUE indiquant que le code s'est correctement exécuté
 * - Un message approprié en cas d'erreur.
 * @return Booléen
 */
function transfert ()
{
    $ret        = false;
    $img_blob   = '';
    $img_taille = 0;
    $img_type   = '';
    $img_nom    = '';
    $taille_max = 250000;
    $msg_erreur = true;
    $ret        = is_uploaded_file ($_FILES['fic']['tmp_name']);
    if ( !$ret )
    {
        $msg_erreur = "Problème de transfert";
    }
    else
    {
        // Le fichier a bien été reçu
        $img_taille = $_FILES['fic']['size'];
        if ( $img_taille > $taille_max )
        {
            $msg_erreur = "Trop gros !";
        }
        $img_type = $_FILES['fic']['type'];
        $img_nom  = $_FILES['fic']['name'];
        /**
         *  ... Bon ok, et la suite ?? Il faudrait peut-être déplacer le 
         * fichier temporaire vers sa derstination finale, tu ne crois pas ?
         * .............................?????????
         */
    }
    return $msg_erreur;
}
?>
<html> 
  <head> 
    <title>Stock d'images</title> 
  </head> 
  <body> 
    <h3>Envoi d'une image</h3>
<?php
/**
 * On vérifie si c'est le premier affichage ou non.
 * Si la variable $_POST est détectée, c'est que le 
 * formulaire a déjà été affiché et on doit traiter l'envoi.
 */
if(isset($_POST['envoi']))
{
    /* On appelle la fonction de traitement de l'envoi */
    $upload = transfert();
    /**
     * Si la fonction ne renvoie pas true 
     * (attention, stricte égalité !== et non juste !=, voir la doc)
     */
    if(true !== ($upload))
    {
        /* On affiche le message renvoyé */
        echo("<p>". $upload ."</p>");
        /* On affiche à nouveau le formulaire */
        echo($code_formulaire);
    }
    /* Sinon, la fonction a renvoyé TRUE : */
    else
    {
        /* On affiche le message de succès de l'opération */
        echo("<p>Envoi réussi.</p>");
        echo('<p><a href="'. $url_action .'">Envoyer un autre fichier ?.</a></p>');
    }
}
/* Sinon, on fait un premier affichage. */
else
{
    echo($code_formulaire);
}
?>
  </body> 
</html> 
Je n'ai pas corrigé le code HTML, j'ai juste découpé ça de façon logique. Il resterait quand même de la correction et des ajouts à faire pour que ce code soit conforme et valide. Mais dans l'immédiat, fais fonctionner ça et éventuellement tu verras après comment ajuster ce point.