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 23/11/2010, 12h27   #1
Membre confirmé
 
Avatar de dacid
 
Homme
Inscription : juin 2003
Messages : 858
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juin 2003
Messages : 858
Points : 260
Points : 260
Par défaut fopen -> Problème de retour chariot

Bonjour à tous,

Je crée des images depuis mon script sur mon serveur linux, et, via un protocole SFTP, je les transfert sur un autre poste en Windows.

Rien à faire, sur mon serveur Linux, je n'arrive pas à ouvrir un fichier en conservant les retours chariots (sauts de lignes) tels qu'ils sont.
Du coup, mes images sont altérés et mes zip sont corrompus.

J'ai fait des tests, et c'est bien dès le fopen (ou file_get_contents) qu'il perd l'information... Tous les \r\n se transforment en \n.

Je crois que j'ai tout essayé, le paramètre 'b' ou 't' n'a pas l'air d'être prit en compte.
Le paramètre auto_detect_line_endings ne change rien (de plus, la logique voudrait qu'il reste à 0, comme il est par défaut).

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
22
23
24
25
26
27
	public function file_get_contents2($filename) { // Redéfinition de la fonction file_get_contents2 pour avoir la main dessus
		//return file($filename, FILE_USE_INCLUDE_PATH);
		if($fp = fopen($filename, 'rb')) {
			$buffer = fread($fp, filesize($filename));
			fclose($fp);
			return $buffer; // "COUCOU\r\nTEST\r\n"; //
		} else 
			return false; // */
	}
 
	public function uploadFile($local_file, $remote_file) {
		$local_file = "testFtp.txt";
		ini_set('auto_detect_line_endings', false);
		ini_set('default_charset', 'ISO-8859-1');
		$sftp = $this->sftp;
		$stream = @fopen("ssh2.sftp://$sftp$remote_file", 'wb');
		if (! $stream) {
			throw new Exception("Could not open file: $remote_file");
		} //else echo "Ouverture fichier OK.<br />";
		//$data_to_send = $this->file_get_contents2($local_file);
		$data_to_send = file_get_contents($local_file);		
 
		if (@fwrite($stream, $data_to_send) === false)
			throw new Exception("Could not send data from file: $local_file.");
 
		@fclose($stream); // */
	}
(Je ne sais pas si le ini influe sur le default_charset)

Avez vous une idée ?

Merci d'avance.
__________________
David.
dacid est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web