Page 1 sur 2
upload de fichier .pdf
Posté : 05 mai 2006, 17:00
par Béka
Bonjour a tous,
je suis actuellement en train de réaliser un site Internet et j'aimerais offrir la possibilité aux internautes de déposer des fichiers .pdf sur le serveur (là ou sera hébergé le site) à l'aide d'un formulaire. Seulement voila, je suis novice en php et je ne sais pas du tout comment faire. J'ai lu la doc, mais je ne comprends pas beaucoup.
Quelqu'un pourrait-il m'aider ?
Posté : 05 mai 2006, 17:38
par jpaul
Salut,
Quand on ne sait pas comment faire, il faut découper le problème.
J'imagine que les fichiers pdf existent déjà (pusique tu veux offrir aux intenautes la possibilité de les déposer).
Dans ce cas, le fait que les fichiers soient pdf ou pas a peu d'importance.
Si tu arrives à mettre un fichier pdf sur un serveur et qu'il est accessible par un lien, le navigateur du visiteur devrait faire le reste pour afficher ce fichier.
Ton problème se résume alors à :
1) faire un 'upload' de fichier sur le serveur. (Il y a plusieurs tuto sur le sujet.)
2) détecter les fichiers dans un script php qui te permettra de générer une page avec les liens vers les fichiers déposés.
A ta place je commencerais par mettre en place le script qui va permettre de déposer (uploader) les fichiers.
Posté : 05 mai 2006, 20:18
par coxine
oui tu commences par créer ton formulaire avec la balise
par exemple.
Et ensuite, dans la page de traitement du formulaire, après avoir initialisé les variables :
if(!isset($_FILES['fichier'])) $fichier['fichier']=""; else $fichier=array('fichier'=>$_FILES['fichier']);
Ensuite, pour insérer ou mettre à jour ta base, tu définieras ton répertoire par $répertoire : ...
et ensuite tu utilises la fonction : move_uploaded_file(string filename, string destination);
Voilà en espérant t'avoir aidé !
Posté : 07 mai 2006, 13:43
par beka
merci à tous les deux, je vais essayer de faire ça...
en espérant que j'y arriverais et que cela marchera
Posté : 07 mai 2006, 14:23
par coxine
N"hésite pas à revenir avec ton code si tu rencontres des diffucultés !

Posté : 09 mai 2006, 08:09
par Béka
bonjour tout le monde, alors j'ai fais mon formulaire (bouton parcourir) comme il faut. Les valeurs du formulaire son t renvoyées vers la page upload.php qui contient le code suivant :
<?
if ($file_name == "none")
{
print "Spécifier un fichier à envoyer.";
}
else
{
/* répertoire de destination */
$dest_file="pdf/";
/* enlève un "\" */
$source_file=stripslashes($file_name);
/* copie du fichier */
$res_copy=copy($source_file , $dest_file);
print "Fichier envoyé.";
}
?>
mais ca ne marche toujours pas. Pourquoi?
Merci
Posté : 09 mai 2006, 09:35
par coxine
Bonjour
As-tu initialisé ta variable ?
if(!isset($_FILES['fichier'])) $file_name['fichier']=""; else $file_name=array('fichier'=>$_FILES['fichier']); // tu initalises la variable, et tu la mets dans un tableau virtuel
ensuite il me semble que tu as oublié la fonction : move_uploaded_file()
J'aurais tendance à vérifier qu'il y a un nom de fichier, que je copie dans la base dans le champ prévu à cet effet (d'ailleurs comment ta base est-elle construite ?) et ensuite faire le move_uploaded_file pour copier le fichier dans la base.
if ($file_name['fichier']['size']!=0)
{ //---s'il y a une fichier à mettre à jour, alors son nom est inséré dans la base.
$fichier_name=$_FILES['fichier']['name'];
$updateTable = "UPDATE table SET fichier='$fichier_name'";
$repertoire="../pdf/";
move_uploaded_file($fichier['fichier']['tmp_name'],$repertoire.$fichier['fichier']['name']);
}
mysql_query($updateTable, $connexion) or die(mysql_error());
C'est la méthode que j'utilise quand je veux mettre à jour une photo dans ma base. Donc peut-être que la fonction UPDATE n'est pas appropriée pour toi, mais plutôt INSERT....
bon, je suis encore novice, donc je ne sais pas si cette méthode est clean, mais c'est ce que je fais.
Posté : 09 mai 2006, 09:47
par béka
ok bé je vais essayer dans la matinée de corriger mon script avec ton aide. Je tiendrais au courant si je rencontre des difficultés.
Merci
Posté : 09 mai 2006, 10:06
par coxine
ok et regarde bien la doc sur les fichiers....
ici
Car si ton hébergeur n'accepte pas de fichier temporaire....ça coincera mon script
Posté : 09 mai 2006, 14:04
par béka
voila, c'est fini, j'ai réussi à faire cet upload. Ca marche !! 8)
Merci coxine.
Ca me donne presque envie de t'offrir un verre..
Posté : 09 mai 2006, 14:29
par coxine
De rien !
Je suis ravie que ça fonctionne...on trinque alors !

Posté : 09 mai 2006, 16:08
par béka
mais j'étais sérieux quand je disais que je t'offrais un verre..
Si un jour tu es sur dijon, n'hésite à me le faire savoir
Posté : 09 mai 2006, 16:24
par coxine

hehe pas trop souvent en fait !
N'oublie pas de mettre [résolu] ou d'éditer ton post en le mettant !
Posté : 09 mai 2006, 16:38
par zeus
N'oublie pas de mettre [résolu] ou d'éditer ton post en le mettant !
Non, pour tagger un post [RESOLU], il faut utiliser le bouton [RESOLU] qui se trouve en haut à gauche de post pour le créateur du thread.
Il ne faut surtout pas editer le nom du sujet
Mais comme
béka ne s'est pas enregistré, il ne peut pas tagger le sujet. Je le fait donc pour lui

Posté : 09 mai 2006, 17:53
par coxine
voila, c'est pour ça que je parlais d'éditer le post ! car j'avais vu qu'il n'était pas enregistré !
Merci de l'info
