Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Général Conception Web > Sécurité
Sécurité Forum d'entraide sur la sécurité des sites Web, les protections, l'authentification, etc. Avant de poster -> Cours Sécurité.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2007, 11h15   #1
En attente de confirmation mail
 
Inscription : octobre 2003
Messages : 1 249
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 1 249
Points : 261
Points : 261
Par défaut uploader fichier : quelle solution choisir

Bonjour,

je voudrais uploader un fichier sur un serveur. L'ideal serait de le faire en AJAX (pour que l'utilisateur puisse continuer à naviguer sur la page web), mais j'ai cru comprendre que c'est impossible.

qu'elles sont les methodes pour uploader un fichier ?
comment ça fonctionne exactement ? c'est le serveur qui va chercher le fichier chez l'hote ou c'est l'hote qui envoie directement le fichier sur le serveur ?
je ne comprende pas bien comment fonctionne le transfert (bniveau securité) => normalement, l'hote n'a pas le droit d'ecrire directement sur le serveur, non ? et le seveur n'a pas le droit de lire le disque dure de l'hote, non ?
Emcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 15h20   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Tout dépend des langages disponibles sur ton serveur...
Mais dans tous les cas, il faut que ton serveur autorise les upload de fichiers...

Je te donne ici l'exemple en PHP
Mais en gros tu utilises un champ INPUT FILE et un encodage de formulaire spécifique

Code :
1
2
3
4
5
<form action="monscript.php" name="edi" method="post" enctype="multipart/form-data">
<input type="text" name="shortname" value=""  size="40" />
<input type="file" name="cover" size="35" />
</form>
L'utilisateur verra donc une boite de texte avec un bouton parcourir qui lui permet de sélectionner le fichier a envoyer.
Quand il va le valider, le serveur va uploader le fichier chez lui.

Ensuite tu peux récupérer les infos du fichier comme ceci dans le script pout le traietement :

$file = $_FILES['cover']['tmp_name'] => Nom du fichier temporaire envoyé sur le serveur. Il te faudra le déplacer, renommer a l'aide de PHP

$name = $_FILES['cover']['type'] => Le type MIME du fichier qui a été envoyé. Utilie pour voir si le type de fichier est autorisé (par ton script).

$size = $_FILES['cover']['size'] => La taille du fichier qui a été envoyé.

Pour le déplacer tu fais comme ceci :
Code :
1
2
3
4
5
$file = $_FILES['cover']['tmp_name'];

$myimage = 'images/logo.jpg';
move_uploaded_file($file, $myimage);
Mais bon, un bon cours est meilleur qu'un long discours, donc tu trouveras toutes les explications ici
Upload de fichiers en PHP

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 16h06   #3
En attente de confirmation mail
 
Inscription : octobre 2003
Messages : 1 249
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 1 249
Points : 261
Points : 261
je n'ai pas bien compris : lorsque l'on fait un "post", on ecrit directement sur le disque dur du serveur (je ne comprends pas pourquoi on a le droit d'ecrire comme ça sur le disque dur : c'est dangereux, non ? ...ex : si on envoie pleins de fichiers valumineux en même temps => risque de remplir le disque dure ...) ?

c'est quoi le protocole utilisé lors de l'envoie du fichier (HTTP, FTTP,...) ?
Emcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 16h27   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

La solution décrite est en HTTP.
Il existe des solutions via FTP, mais je les connais mal. La solution HTTP est la plus courante.

On n'écrit pas réellement sur le serveur, on écris dans un fichier temporaire qui se videra de lui meme. C'est ton sc ript (qui lui a la main) qui va déplacer du répertoire temporaire vers l'endroit voulu pour le stockage.

Il n'y a pas de réel risque de saturer le serveur car :

Dans le formulaire tu peux mettre une sécurité de cette manière :
Code :
1
2
3
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
La valeur est inscrite en octets.
100000 => 100Ko
1000000 => 1Mo

D'autre part il existe dans la configuration du serveur une limite autorisée pour l'upload du fichier. Dans la plupart des cas cette limite se situe à 2Mo

Enfin et pour conclure, tu peux vérifier toi même la taille du fichier qui a été envoyé avec la variable $size = $_FILES['cover']['size']

Si elle ne correspond pas a ce que tu souhaites, tu ne déplace pas le fichier temporaire et ce dernier s'effacera tout seul.

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 09h10   #5
En attente de confirmation mail
 
Inscription : octobre 2003
Messages : 1 249
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 1 249
Points : 261
Points : 261
ok merci pour ta reponse
Emcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h53.


 
 
 
 
Partenaires

Hébergement Web