Copier un fichier qui se trouve sur internet [PHP] - PHP - Programmation
Marsh Posté le 01-02-2003 à 12:02:24
tu ferais peut être mieux de passer par les fonctions de manipulation d'image (imagecreatefromjpeg par ex.)
Marsh Posté le 01-02-2003 à 12:18:52
http://www.php.net/manual/en/function.fopen.php
Newbie advice: The little "b" for binary operations is very essential when working with PHP4 and Apache on the win32 platform. fread() only reads a couple of hundred bytes when reading for example an image without "b".
// Read tempfile data into $thumb_img.
$thumb_file_size = filesize('C:\\Temp\\temp.jpg';
$fp = fopen('C:\\Temp\\temp.jpg', "rb");
$thumb_data = addslashes (fread ($fp, $thumb_file_size));
fclose ($fp);
unlink('C:\\Temp\\temp.jpg';
Marsh Posté le 01-02-2003 à 13:57:26
Je n'arrive pas a comprendre, ok je dois mettre un b quelque part dans un fopen mais lequel ?
Marsh Posté le 01-02-2003 à 16:21:23
Code :
|
Testé et approuvé !
Jolies photos ! ! !
Marsh Posté le 01-02-2003 à 17:42:39
Je ne suis pas encore arrivé a le faire marcher sur mon PC, mais aucuns problèmes sur mon Linux.
Je vais le décortiquer pour mieux comprendre son fonctionnement, en tout cas, merci !
Marsh Posté le 01-02-2003 à 17:47:15
mauvais emploi de feof, directment hérité du C, ce n'est pas le eof de pascal. il faut tester les retours des fonctions d'E/S (voir doc)
Marsh Posté le 01-02-2003 à 18:12:01
J'ai pas encore compris l'idée des en-têtes HTTP et de la chaîne "JFIF" mais imaginons que les images voulues soient des .bmp ou bien des .jpe, qu'elles devraient être les modifications ? l'en-tête seulement ?
Marsh Posté le 01-02-2003 à 18:43:07
Mara's dad a écrit :
|
je viens de tester,ya bien les images qui se créé mais j'arrive pas a les lire comme si elle etait corompu
Marsh Posté le 01-02-2003 à 18:52:42
C'est certainement l'histoire de beleg, si tu le peux, teste sur un serveur Unix.
Marsh Posté le 01-02-2003 à 19:04:11
_Raynor_ a écrit : C'est certainement l'histoire de beleg, si tu le peux, teste sur un serveur Unix. |
ca marche
Marsh Posté le 01-02-2003 à 20:04:58
++Taz, D'accord avec toi, mais çà marche quand même !
_Raynor_, ja recherche de JFIF, c'est parce-que le serveur revoie une réponse du genre :
Code :
|
Les données (l'image en l'occurence) se trouvent à la suite.
En fait ce qu'il faudrait faire pour être vraiement correct, c'est de commencer par vérifier que le serveur renvoie une réponse OK :
HTTP/1.0 200 OK
Ensuite, il faut vérifier le Content-Type qui permet de savoir ce qu'on va recevoir :
Content-Type: image/jpeg
C'est bien une image jpeg !
Enfin, le serveur donne la longueur en octet :
Content-Length: 54676
Donc ce qu'il faut faire, c'est prendre les 54676 derniers octets du buffer et les écrire dans un fichier.
Voilà !
J'ai utilisé l'astuce de la recherche de la chaîne 'JFIF' pour faire simple.
Marsh Posté le 02-02-2003 à 18:21:29
jai ecrit ca perso :
Code :
|
Marsh Posté le 01-02-2003 à 11:08:32
Imaginons que je veuille copier le fichier image se trouvant a http://www.site.com/tutures/photos/1.jpg
comment faire puisque :
copy("http://www.site.com/tutures/photos/1.jpg", "photos/1.jpg" );
ne marche pas
J'ai fait quelques recherches mais sans trop de succès, en fait j'ai le code suivant :
Mais le fichier "test_9.jpg" qui est créer ne semble pas être bon (image corrupue en sommes). Je ne vois pas où ça merde car, j'ai fait des tests avec des url comme http://toofoot.net.free.fr et le fichier qui est créer contient bien le code source de ce superbe site sur le Foot (qui a dit Promo ?? ).
Merci de me mettre sur la (bonne) voie
Message édité par _Raynor_ le 01-02-2003 à 11:19:02