probleme recuperation image

Eléphant du PHP | 70 Messages

24 mai 2007, 14:13

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

Eléphanteau du PHP | 38 Messages

24 mai 2007, 17:40

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

Mammouth du PHP | 19672 Messages

24 mai 2007, 17:51

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2291 Messages

24 mai 2007, 18:58

Il est ou ton dossier de destination :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 19672 Messages

24 mai 2007, 19:31

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: