Upload php problème ?
Fermé
gotomtom
Messages postés
55
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 novembre 2012
-
30 juin 2011 à 14:26
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 - 30 juin 2011 à 19:57
gotomtom Messages postés 55 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 novembre 2012 - 30 juin 2011 à 19:57
A voir également:
- Upload php problème ?
- Easy php - Télécharger - Divers Web & Internet
- Youtube upload - Télécharger - Diffusion
- Fourtoutici upload ✓ - Forum Réseaux sociaux
- Où télécharger des journaux gratuit : Fourtoutici ? ✓ - Forum Téléchargement
- Tubidy upload ✓ - Forum Mobile
5 réponses
doctormad
Messages postés
430
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
2 avril 2015
99
30 juin 2011 à 15:45
30 juin 2011 à 15:45
Salut,
Je crois que tu t'es un peu mélangé :)
D'une part tu peux upload un fichier sur un serveur avec ta form
Ensuite tu peux déplacer le résultat du post ($_FILE) à un endroit différent du répertoire temporaire dans lequel le ficher se retrouve par défaut à l'aide de move_uploaded_file
Pour cela tu n'a pas besoin de connexion FTP.
La connexion FTP c'est encore autre chose, si tu voulais par exemple déplacer le fichier du premier serveur vers un deuxième serveur distant. Dans ce cas il te faudrait utiliser la fonction ftp_put après avoir créé ta connexion FTP.
Je crois que tu t'es un peu mélangé :)
D'une part tu peux upload un fichier sur un serveur avec ta form
Ensuite tu peux déplacer le résultat du post ($_FILE) à un endroit différent du répertoire temporaire dans lequel le ficher se retrouve par défaut à l'aide de move_uploaded_file
Pour cela tu n'a pas besoin de connexion FTP.
La connexion FTP c'est encore autre chose, si tu voulais par exemple déplacer le fichier du premier serveur vers un deuxième serveur distant. Dans ce cas il te faudrait utiliser la fonction ftp_put après avoir créé ta connexion FTP.
gotomtom
Messages postés
55
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 novembre 2012
97
Modifié par gotomtom le 30/06/2011 à 16:28
Modifié par gotomtom le 30/06/2011 à 16:28
Effectivement, je me suis légèrement mélangé avec le FTP. Je partais de l'idée d'envoyer de l'ordi sur le site web, mais comme mon interface est sur le serveur du même site web ==> pas besoin de FTP car nous sommes à la même place.
J'aime bien faire un formulaire et une page cible, c'est un peu plus simple.
Par contre ça ne fonctionne toujours pas. J'ai tjs le message "Echec de l'upload !"
Formulaire identique.
upload.php
C'est peut-être le chemin qui est faux.
Sur FileZilla c'est indiqué : "site distant : /html/images/temp/"
Par exemple, l'image toto3.jpg dans ce fichier se retrouve sur http://www.Mon-Site.fr.fr/images/temp/toto3.jpg
Mon interface se trouve dans "site distant : /html/admin/upload.php"
Donc je trouve mon interface sur http://www.Mon-Site.fr/admin/upload.php
Pouvez-vous m'aider ? Merci
J'aime bien faire un formulaire et une page cible, c'est un peu plus simple.
Par contre ça ne fonctionne toujours pas. J'ai tjs le message "Echec de l'upload !"
Formulaire identique.
upload.php
<?php $dossier = '/html/images/temp/'; $fichier = basename($_FILES['avatar']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['avatar']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['avatar']['name'], '.'); //Début des vérifications de sécurité... if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau { $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...'; } if($taille>$taille_maxi) { $erreur = 'Le fichier est trop gros...'; } if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload { //On formate le nom du fichier ici... $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier.$fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo 'Upload effectué avec succès !'; } else //Sinon (la fonction renvoie FALSE). { echo 'Echec de l\'upload !'; } } else { echo $erreur; } ?>
C'est peut-être le chemin qui est faux.
Sur FileZilla c'est indiqué : "site distant : /html/images/temp/"
Par exemple, l'image toto3.jpg dans ce fichier se retrouve sur http://www.Mon-Site.fr.fr/images/temp/toto3.jpg
Mon interface se trouve dans "site distant : /html/admin/upload.php"
Donc je trouve mon interface sur http://www.Mon-Site.fr/admin/upload.php
Pouvez-vous m'aider ? Merci
doctormad
Messages postés
430
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
2 avril 2015
99
30 juin 2011 à 16:27
30 juin 2011 à 16:27
En effet c'est probablement le chemin.
Il y a plusieurs possibilités tu peux utiliser le chemin complet comme tu fais là mais alors il te faut le chemin réellement complet, pour le voir utilises $_SERVER['DOCUMENT_ROOT']
Sinon tu passe par un chemin relatif en utilisant dirname(__FILE__) par exemple.
Dans ton exemple ça donnerais move_uploaded_file($_FILES['avatar']['tmp_name'], dirname(__FILE__).'/../images'.$fichier)
Il y a plusieurs possibilités tu peux utiliser le chemin complet comme tu fais là mais alors il te faut le chemin réellement complet, pour le voir utilises $_SERVER['DOCUMENT_ROOT']
Sinon tu passe par un chemin relatif en utilisant dirname(__FILE__) par exemple.
Dans ton exemple ça donnerais move_uploaded_file($_FILES['avatar']['tmp_name'], dirname(__FILE__).'/../images'.$fichier)
gotomtom
Messages postés
55
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 novembre 2012
97
Modifié par gotomtom le 30/06/2011 à 17:42
Modifié par gotomtom le 30/06/2011 à 17:42
C'est bien le chemin. Avec Wamp en local, le code fonctionne.
J'ai tout essayé, rien ne fonctionne. ton code bien sûr, mais aussi :
$dossier = '/html/images/temp/';
$dossier = '/html/images/temp';
$dossier = './html/images/temp';
$dossier = './html/images/temp/';
$dossier = '/home/guest/html/images/temp/';
$dossier = '/home/guest/html/images/temp';
$dossier = './html/images/temp/';
$dossier = '../images/temp';
$dossier = '../images/temp/';
Je me demande si ce n'est pas le serveur qui interdit l'upload.
Quand je fais,
upload_tmp_dir qui me donne no value
Le reste est ok :
file_uploads= On
upload_max_filesize = 64M
post_max_size = 84M
Explication :
file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.
upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize
J'ai tout essayé, rien ne fonctionne. ton code bien sûr, mais aussi :
$dossier = '/html/images/temp/';
$dossier = '/html/images/temp';
$dossier = './html/images/temp';
$dossier = './html/images/temp/';
$dossier = '/home/guest/html/images/temp/';
$dossier = '/home/guest/html/images/temp';
$dossier = './html/images/temp/';
$dossier = '../images/temp';
$dossier = '../images/temp/';
Je me demande si ce n'est pas le serveur qui interdit l'upload.
Quand je fais,
<?php phpinfo(); ?>j'ai les même résultats que le tutoriel sauf pour
upload_tmp_dir qui me donne no value
Le reste est ok :
file_uploads= On
upload_max_filesize = 64M
post_max_size = 84M
Explication :
file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.
upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gotomtom
Messages postés
55
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 novembre 2012
97
30 juin 2011 à 19:57
30 juin 2011 à 19:57
J'ai trouvé la solution :
$dossier = "../images/temp/";
Il manquait le droit d'écriture à Temp :-) Désormais avec 707, ça va bcp mieux..... temp drwx---rwx
Merci
$dossier = "../images/temp/";
Il manquait le droit d'écriture à Temp :-) Désormais avec 707, ça va bcp mieux..... temp drwx---rwx
Merci