Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 07/02/2011, 12h52   #1
Membre du Club
 
Inscription : mai 2010
Messages : 97
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 97
Points : 53
Points : 53
Par défaut upload de fichier

voila je souhaite uploader des fichiers puios qu'ils soient recuperable par telechargement...jusqu'a là c'est logique. L'upload fonctionne tres bien sauf que dans le chemin d'accés il y a le terrible Espace (oooo). C'est ca qui me pose probleme je ne peux pas changer le chemin et je dois donc trouver un moyen de recuperer les fichiers malgres l'espace...

voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
if (isset ($_FILES['nomF']))
{
$dossier = 'D:/users/commun magasin/news';
$fichier = basename($_FILES['nomF']['name']);
$taille_maxi = 9000000;
$taille = filesize($_FILES['nomF']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.xlsx', '.txt', '.csv', '.pdf');
$extension = strrchr($_FILES['nomF']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = '<center><p style="color:orange;font-size:20px;">Aucun fichier n\'a ete transfere</center><br/>';
}
if($taille>$taille_maxi)
{
     $erreur = '<center><p style="color:orange;font-size:20px;">Le fichier est trop gros...</center><br/>';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
	$lieu=$dossier."/".$fichier;
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
	 $fichier = $dossier."/".$fichier;
	 $fichier = str_replace(' ','%20',$fichier);
     if(move_uploaded_file($_FILES['nomF']['tmp_name'], $lieu)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo '<center><p style="color:orange;font-size:20px;">Upload effectué avec succès !</center><br/>';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo '<center><p style="color:orange;font-size:20px;">Echec de l\'upload !</center><br/>';
		  echo $fichier;
		  echo $dossier;
     }
Et la page où j'ai le lien :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
else {
 
	while ($data = mysql_fetch_array($req)) {
		echo '<b>News N° ' , $data['id'] , ' par ' , $data['auteur'] , '</b><br />';
		echo '<b>Titre : </b>' , $data['titre'] , '<br />';
		echo 'Postee le : ' , $date , '<br/>';
		echo '<b>News :<br/></b><p style="font-size:30px;"><i>' , $data['texte_news'] , '</i></p>';
		?>
		<a href="<?php echo $data['Nomfichier']?>" class="add" > <?php echo $data['Nom'];?> </a><br/>
		<?php
		echo '_____________________________________________<br/>';
	}
}
nightfall59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 15h50   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Code :
1
2
3
?>
		<a href="<?php echo urlencode($data['Nomfichier']);?>" class="add" > <?php echo $data['Nom'];?> </a><br/>
		<?php
Citation:
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions))
je savais pas que le nom d'un fichier avait une importance quelconque
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2011, 10h14   #3
Membre du Club
 
Inscription : mai 2010
Messages : 97
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 97
Points : 53
Points : 53
le lien marche maintenant mais le probleme c'est qu'il me dit page web introuvable :s

ps: j'ai remarqué que ce n'est pas l'espace qui pose probleme car si je met les fichiers uploadé dans le meme dossier que mes pages php il n'y a pas de probleme. c'est pour indiquer un chemin genre D:/.../fichierupload.csv (exemple) dans ce cas j'ai un url qui est soit :

File:///D:/... (ca me donne un lien non clicable)

ou encore mieux :

http://localhost/Workflow/C:/wamp/www/Workflow/... (url non trouvable)

et pauvre de moi je veux tout simplement un truc du genre :

http://localhost/C:/wamp/... (où je peux clic et qui me propose le dl du fichier) :'(
nightfall59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 11h39   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
normal.

il faut mappé le chemin du fichier (D:\un\chemin\dans\le\system\qui\reste\secret\vers\le\fichier) dans le system vers une URL "publique" du genre http:\\localhost\le\repertoire\que\je\veux\document.interessant )

pour celà plein de techniques, j'ai pas encore trouver de chose qui me plaise vraiment.
en tout cas, il faut que
  • le répertoire ou tu stockes les documents soit "servi" (+/- sous controle) par apache (par défaut www et ses enfants uniquement sous wamp)
  • tu te contentes de mettre dans le href le chemin relatif du document à partir du répertoire www
  • ça c'est la solution la plus simple mais perso j'aime pas mélanger les répertoires qui contiennent des scripts et les repertoires qui contiennent des documents à servir comme du html. Sous apache, j'aurai envie de définir le serveur virtuel http://documents.localhost/ mais ça demande un peu de taf supplementaire et de mettre les documents à publier dans une autre racine que www.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h21   #5
Membre du Club
 
Inscription : mai 2010
Messages : 97
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 97
Points : 53
Points : 53
et sous wamp il y a moyen de modifier les repertoires servis, pour qu'il n'y ai pas que www et ses enfants mais un choix plus large comme le disque dur local^^

parceque j'ai wamp sur le C:/ sur le serveur

sur ce meme server j'upload mes fichiers (pour mon exemple) sur D:/users/.../fichiers.ext

ps : mes problemes se sont agravés depuis hier, sur le server, wamp ne veut plus demarer mysql, c'est plutot genant tout ca et je sais pas si c'est parceque j'ai mis apache sur le port 81 et oublié de modifié une autre config...
nightfall59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h13   #6
Membre du Club
 
Inscription : mai 2010
Messages : 97
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 97
Points : 53
Points : 53
Bon apres de longs moments de recherche, mysql ne demarre pas a cause d'une application plutot importante, donc ce sera un autre pc qui servira de serveur avec HDD externe.

Je vais installer wamp sur ce HDD et mettres les dossiers (identiques a ceux du server, juste les deplacer en fait) dans le dossier www du HDD. En plus de resoudre le probleme de mysql ca va surement resoudre celui de l'upload car le dossier www est servi comme gene l'a dit plus haut.

Avec cette configue j'espere que ca tournera normalement. j'attend l'avis de gene ou la verification^^
nightfall59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 15h38   #7
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
n'attend pas, j'ai absolument aucune idée sur le problème décrit. Même pas sur de bien comprendre. Je sais que sous wamp tu peux tout faire de ce qui est possible avec apache et PHP à quelques limitations pres, mais je sais pas ton niveau...

Par contre ce que je pense c'est que avoir un serveur web sur le port 81 c'est pas standard et ça va t'obliger à forcer le port dans TOUTES les urls. c'est moche.

genre http://localhost:81/ au lieux de http://localhost/

si tu as plusieurs site sur une meme machine la solution officielle c'est serveur web virtuel (au sens HTTP) et une seule application pour servir du web.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 09h28   #8
Membre du Club
 
Inscription : mai 2010
Messages : 97
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 97
Points : 53
Points : 53
bon et bien apres modifications j'ai mon appli web sur un serveur, où elle sera toute seule et personne pour l'embeter... =), l'upload fonctionne et tout est plus simple, mon dossier d'upload est C:/wamp/www/... et ainsi j'ai pas d'url bizarre pour le dl. Et sur cette machine apache peut rester sur le port 80

donc voila resolu (normalement^^)
nightfall59 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 08h59.


 
 
 
 
Partenaires

Hébergement Web