formulaire upload fichier

Eléphanteau du PHP | 10 Messages

15 mai 2012, 22:38

Bonjour,

Je voudrais créer un formulaire permettant d'uploader des fichiers, jusque là, je m'en sort. Mais je voudrais ensuite que les fichiers uploadés soient visibles en dessous du formulaire d'upload et là je sèche.

Voici mon formulaire:
<form method="post" action="page.php" enctype="multipart/form-data">

<input type="file" name="nom_du_fichier" />
<input type="submit" name="submit" value="Envoyer" />

</form>
Quel code utiliser pour mes fichiers apparaissent sur la même page ?

Merci d'avance,
Ccox78

ViPHP
AB
ViPHP | 5818 Messages

15 mai 2012, 23:20

Et bien tu les fait afficher comme tu ferais afficher une image normale. Vu que tu connais le nom de l'image et le nom du dossier, ce ne devrait pas être compliqué de générer le code html correspondant.

Eléphanteau du PHP | 10 Messages

15 mai 2012, 23:25

Je me suis mal exprimée. Je ne veux pas afficher le fichier en lui même mais un lien pour le télécharger.
En clair c'est pour permettre de mettre nos cours en ligne. Donc X met un cours et Y peut le télécharger.

Eléphant du PHP | 343 Messages

16 mai 2012, 01:51

Je ne vois pas le problème. Si tu as le dossier et le nom du fichier, il suffit simplement de faire un lien vers le fichier (à place d'1 img src) donc 1 a href.
Développeur web

Eléphanteau du PHP | 10 Messages

16 mai 2012, 11:47

Je ne connais pas le nom du fichier puisque tout le monde met ce qu'il veut. Et les fichiers doivent s'afficher les uns à la suite des autres. Fichier1 ne doit pas être écrasé par fichier2.
La solution est peut être toute simple mais je ne la trouve pas...

Eléphant du PHP | 343 Messages

16 mai 2012, 12:18

Normalement, il est conseillé de changer le nom du fichier. Sinon tu peux le récupérer par $_FILES['lenomdufichier']['name'].
Pour qu'il ne soit pas écrasé, il va falloir vérifier l'existence du nom du fichier dans le dossier. S'il existe => on génère un autre nom sinon tout est bon.
Développeur web

Mammouth du PHP | 702 Messages

16 mai 2012, 14:58

le lien serait probablement de la forme
<a href="tonrepertoire/<?php echo $_POST['nom_du_fichier'] ; ?>" />
a adapter avec ton répertoire

ViPHP
AB
ViPHP | 5818 Messages

16 mai 2012, 17:21

Oui en fait cela te fait deux pages distinctes et donc deux scripts distincts.

Une page qui permet de télécharger les fichiers vers le serveur pour ceux qui déposent leurs cours.
Une page qui permet de télécharger les fichiers depuis le serveur pour ceux qui veulent prendre un cours dans la liste proposée.

Pour la première étape tu as un tuto ici

Pour la seconde tu peux utiliser simplement des liens comme mentionner plus haut. Ces liens listeront par exemple un répertoire avec par exemple la fonction "glob" ou "DirectoryIterator" ou encore "FilesystemIterator". Ensuite tu peux aussi forcer le téléchargement mais c'est une option pas toujours utile.

Eléphanteau du PHP | 10 Messages

17 mai 2012, 00:03

Bonsoir,
Merci pour vos réponses. Je vais regarder ça et essayer de faire quelque chose. Je reviens vers vous si je ne m'en sors pas.

Bonne soirée/nuit

Eléphanteau du PHP | 10 Messages

17 mai 2012, 01:45

Bon, j'ai réussi la première page, même si j'ai un soucis avec les accents que je ne comprends pas puisque je suis en utf-8 :?

Je bloque sur la deuxième page, je n'arrive toujours pas à récupérer les fichiers envoyés. J'ai vérifié, les fichiers s'envoient bien mais je n'arrive pas à faire le code qui me permettrait de les récupérer... et je ne connais pas les fonctions que vous m'avez proposé, je n'arrive pas à les utiliser.

Eléphanteau du PHP | 10 Messages

17 mai 2012, 10:37

Bonjour,

Est-ce que je pourrai avoir un peu plus d'explication sur la page de téléchargement des cours SVP

Eléphanteau du PHP | 10 Messages

17 mai 2012, 15:57

Désolée d'insister mais je n'y arrive vraiment pas.

ViPHP
AB
ViPHP | 5818 Messages

17 mai 2012, 17:06

Regarde par exemple la fonction glob.
<?php
$repertoire = 'PHOTO/';
$tableau_fichiers = glob($repertoire."*.jpg");

foreach ($tableau_fichiers as $filename) {
    echo '<a href="'.$filename.'">'.basename($filename).'</a><br>';
}
?>
Ce script va lister tous les fichiers du répertoire "PHOTO" (s'il se situe au même niveau que le script dans le dossier du site) ayant l'extension 'jpg' et en créant un lien vers les fichiers. Pour retourner tous les fichiers sans sélection sur l'extension, il te suffirait d'écrire : $tableau_fichiers = glob($repertoire."*.*");

Eléphanteau du PHP | 10 Messages

17 mai 2012, 17:33

Merci pour l'explication. Je comprends l'utilisation de glob.
Donc j'ai modifié avec mes infos ce qui me donne:

<?php
$repertoire = 'insta/';
$tableau_fichiers = glob($repertoire."*.*");

foreach ($tableau_fichiers as $filename) {
echo '<a href="'.$filename.'">'.basename($filename).'</a><br>';
}
?>

que j'ai mis dans le fichier telechargement.php

Pourtant, quand je vais sur cette page, il n'y a rien... et mes fichiers ont bien été envoyés.

ViPHP
AB
ViPHP | 5818 Messages

17 mai 2012, 17:50

Tel que c'est écris il faut que le dossier 'insta' soit au même niveau (dans l'arborescence des dossiers de ton site) que le script 'telechargement.php'.
Vérifies le contenu de 'insta' sur le serveur d'évaluation ou sur le serveur distant.