Aller au contenu

Envoyer un fichier sur l'hebergement


Sujets conseillés

Posté

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 !

Posté

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 / validation
move_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.

Posté

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 !?

Posté (modifié)

Quel serait la destination, si je voulais que ca se trouve dans le meme dossier que mon fichier php ?

Modifié par ZeDevil
Posté

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']);

Posté (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é par ZeDevil
Posté

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é.

Posté

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.

Posté (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 / validation
move_uploaded_file($fichier['tmp_name'], $fichier['name']) or die("pas ok");
echo "ok";


?>

Modifié par ZeDevil
Posté

Tiens comment ca se fait ??! J'ai pourtant fais un copier coller.........merci en tout cas.

Bravo Ernestine, un bisous pour le remerciement ! bisou.gif

Posté

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.

Posté (modifié)

Oui, Ernestine, je m'en suis rendu compte après que j'aurais mettre dans les balises...... :unsure:

(J'ai corrigé mon erreur ;):P )

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é par ZeDevil
Posté

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

Posté

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......

Posté

Il est simple de protéger l'accès au dossier avec un .htaccess ;)


/>http://www.webmaster-hub.com/publication/Le-fichier-htaccess.html

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...