Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 30/01/2007, 17h21   #1
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Par défaut Erreur si le répertoire contient un accent

Bonjour
j'ai un script de téléchargement qui fonction très bien
enfin, jusqu'a maintenant, je suis tombé par hasard sur un bug
si j'ai un répertoire avec un accent, le téléchargement est impossible, le script plante en fait.
ainsi si je veux télécharger, je le fait à partir d'un lien pointant sur le fichier et passant en parametre le nom du fichier et le répertoire dans lequel il se trouve
si j'ai

C:repertoire/nom_fichier.doc ... ca fonctionne
par contre
C:répertoire/nom_fichier.doc ....plante

le probleme c'est que les répertoire peuvent et doivent etre créer avec des accents parcequ'on parle francais


ma question, est ce normal que le script de téléchargement avec les headers plante à cause des accents
et
est ce qu'il y a moyen de conserver les répertoires avec accents et d'effectuer le téléchargement pareil?

merci beaucoup
si vous avez besoins du code demandez le
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 17h26   #2
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 10 889
Points : 10 889
y'a une solution breve : virer les accents ! meme si on parle français , on est quand meme en informatique et y a certaines choses a eviter ! (comme des repertoires avec des accents lol)
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 17h29   #3
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
ouais
c'est ce que je me suis dit et que je suis entraint de faire
mais bon...ce serait bien qu'il y ait une autre solution
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 18h44   #4
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
ben voilà comment je procède
c'est p-e pas la meilleure manière par contre mais bon

ca fonctionne bien pour moi

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
 
$_SESSION['path_dir'] = "C:bibliotheque/";
if(isset($_GET['addFolder'],$_POST['txtNomDossier']) && $_GET['addFolder'] == "now"){
 //le nom du dossier a créer
	$folderName = $_POST['txtNomDossier'];
	// enlever les accents
	$folderName = strtr($folderName,
						 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
						 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');   
	//Test si le dossier existe
	if(!is_dir($_SESSION['path_dir'].$folderName.'/')){
		if(mkdir($_SESSION['path_dir'].$folderName.'/', 0700)){				
			/*Si ca ce rend ici sans probleme
			Le dossier a bien été creer dans le répertoire racine*/
			$msgSucces = '<font color=\"green\" face=\"Comic Sans MS\"><b>**Le dossier a bien été créé dans le répertoire suivant <br>'.$_SESSION['path_dir'].$folderName.'**<br></b></font>';
		}
		else{
			//échec lors de la création du dossier
			$msgProgress = '** Il y a eu échec lors de la création du dossier dans <br>'.$_SESSION['path_dir'].$folderName.'**';
		}
	}
	else{
		//Il y a déjà un dossier avec le meme nom
		$msgProgress = '** Il y a déjà un dossier nommé <i><b>'.$folderName.'</b></i> dans le répertoire suivant : <br>'.$_SESSION['path_dir'].'**';
	}
 
}
 
 
// et plus bas tu fais afficher ton message dans le style
echo $msgProgress;
voilà
dans ce code, comme tu vois, j'ai enlever les accents dont je parlais dans mon post initiale
je suis tjrs à la recherche de la solution dans le premier post pour les autres!
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 19h28   #5
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
t'as localisé ce qui déconnait dans le script de téléchargement ?
Si tu utilises fopen() avec un paramètre venant d'un lien, tu peux peut-être résoudre le problème avec url_encode(), url_decode().

Bye
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 19h46   #6
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
salut
je te montre le script de téléchargement et l'appel dans le lien

Code :
1
2
3
4
5
 
//$files[$cpt] est le nom du fichier après lecture du folder
//$_session['path_dir'] = le chemin d'accès complet du folder
 
<a href="./download.php?type=transfere&file='.$files[$cptFile].'&dossierPath='.$_SESSION['path_dir'].'">'.$files[$cptFile].'</a>
et dans download.php

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
 
<?
//Récupération des variables
$fichier = $_GET['file'];
$path = $_GET['dossierPath'];
 
$downloadurl = $path . $fichier;
$size = filesize($downloadurl);
 
//Forcer le téléchargement avec les headers
header("Pragma: public");
header("Expires: 0");
if(isset($_GET['type']) && $_GET['type'] == 'transfere'){
	header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
}
header("Cache-Control: private",false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$fichier."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size);
 
readfile($downloadurl);  //Permet l'affichage du contenut du fichier
exit;  //Retour à la page
 
?>
quand ya des accents dans le path, comme je mentionnais, ca plante
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2007, 00h08   #7
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Ton code fonctionne presque tel quel chez moi sous Win (IE et FF) et sur un rep avec accent :/
Ce que tu pourrais faire c'est essayer de mettre un lien vers un rep avec accents en dur ici :
Code :
$downloadurl = $path . $fichier;
comme ca tu verras déjà si ca vient du passage par url ou non.
Djakisback 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 01h25.


 
 
 
 
Partenaires

Hébergement Web