Page 1 sur 1
Récupérer fichier uploadés.
Posté : 26 sept. 2010, 19:26
par maequise
Bonjour, je viens faire appelle à vos lumières afin qu'elles puissent éclairer mon chemin

, après ces belles paroles places au code

.
Code de index.php:
<form name="form" method="post" enctype="multipart/form-data" action="upload.php">
<p>
Fichier : <input type="file" name="fichier" size="30"><br />
Auteur : <input type="text" name="auteur" /><br /><br />
Matière : <select name="matiere" size="1">
<option>Hitoire</option>
<option>Géographie</option>
<option>Français</option>
<option>Maths</option>
<option>SES</option>
</select><br /><br />
Envoyer : <input type="submit" name="upload" value="Uploader">
</p>
</form>
Code upload.php:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$fichier = $_FILES['fichier']['name'];
$tmp_file = $_FILES['fichier']['tmp_name'];
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é";
}
?>
<center><a href="../index.php">Pour retourner sur la page d'accueil</a></center>
Donc voici mes deux codes, en principe tous les deux fonctionnent, maintenant j'aimerai faire en sorte que les personne puissent envoyer les fichiers dans le dossier d'upload avec un dossier spécifique pour chaque matière.
Et j'aimerai savoir comment faire pour que les autres membres puissent voir les fichiers qui ont été uploadé sur le site, avec le nom du posteur.
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 26 sept. 2010, 20:38
par xTG
Le mettre dans un sous-dossier existant dans upload ? Tu as la variable de ton select qui contient la valeur, donc tu as juste à la concaténer au bon endroit.
Pour un listing des fichiers avec auteur il te faut utiliser une base de donnée afin d'enregistrer un lien vers le fichier et le nom de l'auteur.
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 01:36
par maequise
Donc si j'arrive à tout comprendre, il me suffit de rajouter $matiere comme variable ?
Je vais de suite me documenter sur comment concaténer, je l'ai lu quelque part mais j'ai oublié entre temps

.
Merci bien,
Cordialement Maequise.
EDIT: Plutôt qu'un double post (et de le faire taper sur les doigts :p) un edit est aussi bien

.
Donc après avoir lu la doc sur la concaténation, voyons si j'ai compris. Il me faudra une variable, admettons, $matiere.
Dans mon dossier d'upload j'aurais donc mes différents dossier selon la matière, est-ce qu'en mettant des condition if et else, pour déterminer de quelle matière il s'agit ensuite il s'occupe de la redirection, ai-je tout compris, ou suis-je le crétin de service ?
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 09:06
par xTG
De quelle redirection parles-tu ? De la redirection du fichier vers le dossier final ?
Dans ce cas non, aucun if n'est requis, il te suffit juste de modifier la variable $content_dir afin de le mettre dans le bon dossier (matière).
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 10:51
par maequise
Etes-vous sûr qu'il ne faudra pas de redirection ?
Le but est que le fichier aille dans un dossier selon la matière qui est sélectionnée.
Bon je vais essayer voire ce que sa donne, je vous tiens au courant.
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 10:52
par xTG
Lis la documentation de la fonction
move_uploaded_file() tu devrai comprendre.
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 20:58
par maequise
J'ai lu la doc, mais je n'arrive pas a en faire l'application pour le moment, je vais continuer de chercher de la doc

.
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 27 sept. 2010, 21:16
par xTG
Le principe de cette fonction est de déplacer le fichier qui a été uploadé dans un dossier temporaire au serveur dans un dossier exploitable et accessible.
Donc c'est dans les arguments de cette fonction que joue le dossier de la matière.
Re: Récupérer fichier uploadés.
Posté : 28 sept. 2010, 00:34
par AB
Tu as une classe d'upload toute faite ici
vos-contributions/upload-fichiers-verif ... 54129.html
En téléchargeant cette classe et en la mettant dans un fichier nommé "class_upload.php" il te suffirait de faire :
<?php require('class_upload.php');
//Liste de tes dossiers autorisés (sans caractères spéciaux ni accents, ni espaces)
$dossiers_autorise = array('Histoire','Geographie','Francais','Maths','SES');
$dossier = 'Histoire';// Indiques un dossier autorisé valide par défaut pour le bon fonctionnement de la classe
$erreur_dossier = null;
// Si ton formulaire est envoyé on regarde si $_POST['matiere'] fait partie du tableau de dossiers autorisés
if(isset($_POST['form'],$_POST['matiere']))
{
if (in_array($_POST['matiere'],$dossiers_autorise))
$dossier = $_POST['matiere'];
else
$erreur_dossier = 'Vous devez choisir la matière';
}
if (empty($erreur_dossier))
{
//Utilisation de la classe de téléchargement (cf la doc dans le lien plus haut)
$up = new Telechargement($dossier,'form','doc','get_form');
$extensions = array('pdf','txt');//Indique les extensions de fichiers autorisés
$up->Set_Extensions_accepte ($extensions);
$up->Upload('reload');
$messages = $up->Get_Tab_message ();
}
?>
<form enctype = "multipart/form-data" action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']).'?get_form=1'?>" method = "post">
<p>
Matière : <select name="matiere" >
<option value="">Choisissez...</option>
<option value="Histoire">Histoire</option>
<option value="Geographie">Géographie</option>
<option value="Francais">Français</option>
<option value="Maths">Maths</option>
<option value="SES">SES</option>
</select>
<br />
<input name = "doc" type = "file" size = "70" />
<input type = "submit" name = "form" value = "Envoyez" />
</p>
</form>
<div style="margin-top:20px;">
<?php if (!empty($messages))
foreach ($messages as $num)
{
foreach ($num as $value)
echo htmlspecialchars($value).'<br />';
}
if(isset($erreur_dossier)) echo $erreur_dossier;
?>
</div>
Bon ça c'est pour l'upload mais il faudra ajouter "un peu de code" si tu veux envoyer le nom de l'auteur dans une base de donnée...
Mais une chose en son temps, déjà essayes de faire fonctionner ce code pour l'upload dans tes dossiers spécifiques (il faut bien sûr que ces dossiers, indiqués dans les "value" des "options" et dans le tableau $dossiers_autorise, soient créés auparavant).
Re: Récupérer fichier uploadés.
Posté : 28 sept. 2010, 09:34
par maequise
En fait c'est quoi le fichier class_upload.php ?
Sinon j'ai essayé le code, il ne fonctionne pas, j'ai un problème avec la classe Telechargement, j'ai regardé un peu partout je ne trouve pas.
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 28 sept. 2010, 18:01
par AB
Sur
ce lien click ici, après le mode d'emploi, vers la fin du message il y a indiqué : la classe. Tu sélectionne tout (y'a même un bouton prévu pour ça au dessus de l'encadré), tu copie l'ensemble et tu l'enregistre dans une page que tu nomme class_upload.php.
Voilà, ainsi le script que je t'ai donné en exemple plus haut pourra faire appel au code de la classe avec la première ligne qui mentionne require('class_upload.php')
Re: Récupérer fichier uploadés.
Posté : 29 sept. 2010, 00:39
par maequise
C'est bon j'ai trouvé, maintenant j'essaye de faire fonctionner le tout

.
Cordialement Maequise.
Re: Récupérer fichier uploadés.
Posté : 29 sept. 2010, 01:20
par AB
Au minimum ça devrait te renvoyer des messages d'information... (excepté si tu ne charge pas de fichier avec le bouton parcourir)
Re: Récupérer fichier uploadés.
Posté : 29 sept. 2010, 06:08
par maequise
C'est tout a fait ça

. Et donc je tente de les comprendre par moi même pour le moment, et si je nage trop je sais ou venir

.
Cordialement Maequise.