ZeDevil Posté 21 Décembre 2011 Posté 21 Décembre 2011 Bonjour à tous ! Je cherche à savoir comment je pourrais faire pour envoyer un fichier pdf ou doc chez mon hébergeur en étant sur une page internet. Je vous explique : J'ai un dossier précis ou je stock des fichiers chez mon hébergeur. Depuis une page de mon site, je veux pouvoir aller sur mon disque dur, choisir un fichier, et l'envoyer dans ce dossier précis. Je ne sais pas comment faire, et si il existe deja des chose la dessus. Je vous demande donc votre aide. Merci à vous, et bonne journée !
Ernestine Posté 21 Décembre 2011 Posté 21 Décembre 2011 Salut, Il fait d'abord faire un formulaire avec un champ de type "file" : c'est un champ qui permet à l'utilisateur de choisir un fichier sur son disque dur. Il faut aussi préciser l'enctype du formulaire. Ce qui donne : <form action="truc.php" method="post" enctype="multipart/form-data"><label for="fichier">Fichier : </label><input type="file" id="fichier" name="fichier" /><input type="submit" value="Envoyer" /></form> Ensuite, dans truc.php, tu récupères le fichier avec $_FILES[] et tu l'enregistres avec move_uploaded_file() : $fichier = $_FILES['fichier'];// Vérifications / validationmove_uploaded_file($fichier['tmp_name'], "destination/fichier.pdf"); Avant l'enregistrement, il faut vérifier que le fichier envoyé est correct (bon format, taille maximale, droits de l'utilisateur, etc). Toutes les infos le concernant sont stockées dans $fichier. Par exemple pour connaître son nom : $fichier['name']. Son type mime : $fichier['type'], etc... Et il faut bien sûr remplacer "destination/fichier.pdf" (dans l'exemple ci-dessus) par le chemin et le nom de ton choix.
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 Salut et merci pour ton aide, mais ce que je ne comprend pas c'est lorsque tu indique qu'il faut changer "destination/fichier.pdf" par le chemin de mon choix, le nom du fichier sera toujours le même !?
Aenoa Posté 21 Décembre 2011 Posté 21 Décembre 2011 non, tu peut très bien mettre en destination "destination/".$fichier['name']
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 D'accord, c'est bien ainsi. Je vais essayer pour voir ce que ça donne ! Merci à vous 2, je reviens vous voir après.
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 (modifié) Quel serait la destination, si je voulais que ca se trouve dans le meme dossier que mon fichier php ? Modifié 21 Décembre 2011 par ZeDevil
Ernestine Posté 21 Décembre 2011 Posté 21 Décembre 2011 La destination est en relatif. Donc pour enregistrer dans le répertoire courant, suffit de juste mettre le nom du fichier : move_uploaded_file($fichier['tmp_name'], $fichier['name']);
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 (modifié) Rha oui ca devrait etre bon, j'ai testé, mais j'avais laissé le "." ! Merci Ernestine ! EDIT : Je viens d'essayer, mais je ne trouve pas mon fichier de test.pdf dans le dossier ? Modifié 21 Décembre 2011 par ZeDevil
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 Je n'arrive pas à trouver doù vient le problème.......surement dans le 2eme fichier 'truc.php' On dirait que ca ne charge rien !
Aenoa Posté 21 Décembre 2011 Posté 21 Décembre 2011 as-tu mis le dossier en CHMOD 777 ? car sinon, le deamon web ne saura rien créer dedans. Au pire, tu peut faire une simple condition savoir si ça a fonctionné, du genre move_uploaded_file($fichier['tmp_name'], $fichier['name']) or die("pas ok");echo "ok"; si tu vois "pas ok", le déplacement du fichier a échoué.
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 J'ai mis le CHMOD 777 sur le 2eme fichier, plus ton test ok, et ca m'indique : pas ok !
Ernestine Posté 21 Décembre 2011 Posté 21 Décembre 2011 J'ai mis le CHMOD 777 sur le 2eme fichier, plus ton test ok, et ca m'indique : pas ok ! Il faut mettre 777 sur le dossier (pas seulement un fichier) qui reçoit le fichier.
ZeDevil Posté 21 Décembre 2011 Auteur Posté 21 Décembre 2011 J'ai mis le dossier qui reçoit en 777, mais j'ai toujours la même réponse..... 'pas ok'
ZeDevil Posté 22 Décembre 2011 Auteur Posté 22 Décembre 2011 (modifié) Oui, bien sur le voilà : 1er fichier : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Envoie de fichiers</title></head><body><table width="800" border="0"> <tr> <td colspan="2" align="center">Pour envoyer un fichier, cliquer sur Parcourir, puis envoyer une fois le fichier selectionné.</td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td colspan="2" align="center"><form action="envoie2.php" method="post" enctype="multipart/form-data"><label for="fichier">Fichier : </label><input type="file" id="fichier" name"fichier" /><input type="submit" value="Envoyer" /></form></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr></table></body></html> 2eme fichier : <p><a href="envoie.php">Retour</a></p><p> </p><?php$fichier = $_FILES['fichier'];// Vérifications / validationmove_uploaded_file($fichier['tmp_name'], $fichier['name']) or die("pas ok");echo "ok";?> Modifié 22 Décembre 2011 par ZeDevil
Ernestine Posté 22 Décembre 2011 Posté 22 Décembre 2011 <input type="file" id="fichier" name"fichier" /> Il manque le = entre name et "fichier".
ZeDevil Posté 22 Décembre 2011 Auteur Posté 22 Décembre 2011 Tiens comment ca se fait ??! J'ai pourtant fais un copier coller.........merci en tout cas. Bravo Ernestine, un bisous pour le remerciement !
Ernestine Posté 22 Décembre 2011 Posté 22 Décembre 2011 Oui, et j'avais édité mon message une heure ou deux après. Cela dit, il ne faut jamais se contenter de copier-coller, il faut lire entièrement ce qu'on copie, et le comprendre, sinon, ça ne sert à rien... Un simple coup de validateur aurait permis de relever cette erreur, et aurait ainsi éviter ce long débug. ZeDevil : la prochaine fois, merci d'utiliser les balises CODE et /CODE pour copier du code.
ZeDevil Posté 22 Décembre 2011 Auteur Posté 22 Décembre 2011 (modifié) Oui, Ernestine, je m'en suis rendu compte après que j'aurais mettre dans les balises...... (J'ai corrigé mon erreur ) J'ai lu et relu mais la 2eme partie pensant que c'était là d’où venait l'erreur mais en fin de compte, c'était dans la 1ere partie. En tout cas, merci pour votre aide, comme à chaque fois que je viens, c'est toujours avec plaisir que je vous retrouve. Modifié 22 Décembre 2011 par ZeDevil
Jeanluc Posté 22 Décembre 2011 Posté 22 Décembre 2011 Bonjour, Si tu autorises des utilisateurs à uploader des fichiers, il faut bien prendre en compte l'aspect sécurité. Dans le pire des cas, si n'importe qui peut placer n'importe quel script php dans un répertoire où il peut lancer son exécution, bonjour les dégats. Evidemment si tu es le seul à avoir accès au script qui fait les uploads, il n'y a pas de souci. Jean-Luc
ZeDevil Posté 23 Décembre 2011 Auteur Posté 23 Décembre 2011 Bonjour Jeanluc ! Non je ne suis pas le seul, bien sur ça n'est pas sécurisé, mais il n'y aura que 2 personnes de confiance y ayant accès. Mais bien sur la page se trouve dans un dossier, et il est toujours possible de tomber dessus par hasard......
Dan Posté 23 Décembre 2011 Posté 23 Décembre 2011 Il est simple de protéger l'accès au dossier avec un .htaccess />http://www.webmaster-hub.com/publication/Le-fichier-htaccess.html
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant