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 10/01/2012, 15h25   #1
Membre Expert
 
Avatar de GLDavid
 
Inscription : janvier 2003
Messages : 2 620
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2003
Messages : 2 620
Points : 2 474
Points : 2 474
Par défaut Ecriture de CSV d'un serveur Unix wers Notepad

Bonjour

Voici mon problème. Notre serveur PHP est sous Linux. On me demande de créer des fichiers CSV et d'autoriser leur téléchargement. Problème: mes clients sont sous WinXP et veulent pouvoir ouvrir le fichier sous notepad.
Or, bien que le fichier soit créé correctement, mon problème vient des sauts de lignes, j'obtiens un caractère bizarre à la place.
Voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
function writeCSV($request, $username, $filetype, $titles, $extension="txt"){
    $filename = $filetype."_".$username."_".setDateFormatted().".".$extension;
    $tmp = sys_get_temp_dir()."/".$filename;
    $out = fopen($tmp, "w");
    getCsvContent($titles, $request, $out);
    fclose($out);
    system(escapeshellcmd("sed -i -e 's/$/\r/' ".$tmp));
    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename='.basename($tmp));
    header("Content-Length: ".filesize($tmp)); 
    readfile($tmp);
    unlink($tmp);
}
 
function getCsvContent($titles, $request, $out){
    fputcsv($out, $titles);
    foreach($request as $index=>$elements){
        fputcsv($out, $elements);
    }
}
Merci d'avance de votre aide.

@++
__________________
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag

Je ne répond à aucune question technique par MP.
GLDavid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 15h33   #2
Membre Expert
 
Avatar de GLDavid
 
Inscription : janvier 2003
Messages : 2 620
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2003
Messages : 2 620
Points : 2 474
Points : 2 474
Bonjour

Je me suis finalement résolu à installer sur le serveur l'utilitaire unix2dos.
Désormais j'invoque ceci:
Code :
system(escapeshellcmd("todos -p ".$tmp));
Le fichier a en effet une meilleur tête.
Bien que le fil soit résolu, simple question, existe t'il une solution 100% PHP pour ce problème ?
Je n'aime pas trop appeler une commande dans du code.

@++
__________________
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag

Je ne répond à aucune question technique par MP.
GLDavid 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 22h35.


 
 
 
 
Partenaires

Hébergement Web