Bonjour,

Je suis en développement d'un site d'upload. Je coine :s

J'upload mon fichier mais je n'arrive pas à renvoyé le lien au visiteur.
Comment faire ?

Merci

13 réponses


didouchy
Réponse acceptée

Désolé du retard, le sommeil été lourd ^^

J'ai regardé ton code d'un peut plus prêt et il s'avère que j'ai un peut changé pas mal de chose car tu avais des ouverture <?php complètement inutile.

Donc j'ai testé le code et il fonctionne ( Du moins chez moi ^^ )

<?php

        if( isset($_POST'upload']) ) // si formulaire soumis
        {
            $content_dir = 'upload/'; // dossier où sera déplacé le fichier

            $tmp_file = $_FILES'fichier']'tmp_name'];

            if( !is_uploaded_file($tmp_file) )
            {
                exit("Le fichier est introuvable");
            }       

            // on copie le fichier dans le dossier de destination
            $name_file = $_FILES'fichier']'name'];

            if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
            {
                exit("Impossible de copier le fichier dans $content_dir");
            }

            echo "Le fichier a bien été uploadé";
            echo "<br />";
            echo "<input type=\texte\" value=\"".$_SERVER'SERVER_NAME']."/".$content_dir."".$name_file."\"/>";
            }

        ?>        

        <!-- End Script -->

        <!-- Content -->
        <div id="content">  

            <center>

              <form method="post" enctype="multipart/form-data" action="upload.php">

                    <label>Votre fichier : </label>
                    <input type="file" name="fichier" size="30">
                    </br>
                <input type="submit" name="upload" value="Uploader">

                </form>

            </center>

        </div>

        <!-- End Content -->

explication:
$_SERVER'SERVER_NAME'] reprend ton nom de domaine au lieu de l'écrire complètement; si tu veut plus d'info, je t'envoi sur ce lien: http://php.net/manual/fr/reserved.variables.server.php

$content_dir que j'ai rajouter après $_SERVER'SERVER_NAME'] puisque lors de l'upload, tu met l'image dans un dossier " upload " j'ai donc reprit le variable pour pouvoir un lien absolu vers ton image.

$name_file reprend en gros le nom de l'image puis son format ( .jpg .png .gif etc ). Donc en rattachant le tout, tu obtient un lien absolu vers le fichier =).

Par-contre, ton script d'upload n'est absolument pas sécurisé puisqu'on peut envoyé des fichier .php .zip etc. C'est une chose essentiel si tu souhaite faire un script d'upload d'image :).

Il faut que tu reprenne ta variable $url si toute fois c'est celle ci et tu la met sur un input type="text" avec un value par exemple.

<input type="text" value="<?php echo " $url " ?>"/>
TwiSka
Auteur
<?php
        if( isset($_POST'upload']) ) // si formulaire soumis
        {
            $content_dir = 'upload/'; // dossier où sera déplacé le fichier
            $tmp_file = $_FILES'fichier']'tmp_name'];

            if( !is_uploaded_file($tmp_file) )
            {
                exit("Le fichier est introuvable");
            }       
            // on copie le fichier dans le dossier de destination
            $name_file = $_FILES'fichier']'name'];
            if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
            {
                exit("Impossible de copier le fichier dans $content_dir");
            }
            echo "Le fichier a bien été uploadé"; ?>
            <p></p>     
            <?php
            echo "Lien : "?><input type="text" value="<?php echo " $tmp_file " ?>"/>;
            <?php
            }
        ?>        

        <!-- End Script -->

        <?php

        include("head.php");

        ?>

        <!-- End Include -->

        <!-- Content -->
        <div id="content">  

            <center>
              <form method="post" enctype="multipart/form-data" action="upload.php">

                    <label>Votre fichier : </label>
                    <input type="file" name="fichier" size="30">
                    </br>
                <input type="submit" name="upload" value="Uploader">

                </form>

            </center>

        </div>

        <!-- End Content -->

    </body>

</html>

Voilà mon code, je comprend pas ...

peut-tu mettre le upload.php car la source de celui-ci m'indiquera les variable utilisé. Cet source là dit juste qu'il faut qu'il upload l'image dans le fichier upload/ et savoir si le fichier a bien été uploadé ou non

TwiSka
Auteur

C'est le fichier upload.php

TwiSka
Auteur

Merci beaucoup !
Je souhaite faire un site s'upload pour tous les fichiers, sauf fichier 'web' qui devrons être dans une archives.

Fait attention car si le visiteur upload un fichier .php ou il a mit dedans un système qui supprime toutes les images du répertoire upload ou autre chose, il peut le faire. Il faudrait a la rigueur que tu fasse ceci:

$tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees
if(in_array(strtolower($extension),$tabExt))
{
    }
    else
    {
        L'extension incorrecte ';
    }
TwiSka
Auteur

Est-ce qu'il y a un danger avec une archives ?

Qu'est-ce que tu appel une archives ? Tu souhaite créer un système d'archives sur une autre table sql ? Et une fois que le visiteur aura uploadé son image/fichier, il sera mit au archive + un lien vers l'image/fichier, non ?

TwiSka
Auteur

Archive pour moi est égal au ZIP / RAR. Je n'ai pas besoin de table sql.

Je ne voit pas trop comment tu veut faire cela. Je pense juste qu'il faut que tu voit pour sécurisé un peut plus ton script d'upload d'image parce que n'importe quel visiteurs pourra uploadé un fichier et supprimé ce dont tu as sur ton serveur. Je laisse la mains à une personne plus compètent parce que là je rame ^^

TwiSka
Auteur

Ok merci beaucoup de ton aide.

pas de souci :)