[PHP] nom du fichier à télécharger avec cURL
Fermé
ghFrankfurt
Messages postés
207
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
10 décembre 2014
-
Modifié par ghFrankfurt le 4/01/2011 à 08:56
ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 - 6 janv. 2011 à 08:47
ghFrankfurt Messages postés 207 Date d'inscription mardi 16 novembre 2010 Statut Membre Dernière intervention 10 décembre 2014 - 6 janv. 2011 à 08:47
A voir également:
- [PHP] nom du fichier à télécharger avec cURL
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
4 réponses
ghFrankfurt
Messages postés
207
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
10 décembre 2014
23
4 janv. 2011 à 14:24
4 janv. 2011 à 14:24
Avec un
Donc je présume qu'il doit au moins y avoir un moyen de récupérer l'extension et à la limite ça m'irais mais avec quoi ?
CURLOPT_HEADERFUNCTIONj'arrive à récupérer "Content-Type: video/quicktime "
Donc je présume qu'il doit au moins y avoir un moyen de récupérer l'extension et à la limite ça m'irais mais avec quoi ?
ghFrankfurt
Messages postés
207
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
10 décembre 2014
23
5 janv. 2011 à 16:29
5 janv. 2011 à 16:29
Bon, avec
Maintenant, le hic c'est de pouvoir sortir $size, $filename et $type de cette fonction. J'ai pensé à le faire avec un tableau, mais le problème c'est que si j'enlève "return strlen($header);" il ne me lit plus le contenu du header...
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "readHeader");j'appelle la fonction ;
function readHeader($ch, $header) { //echo "Read header: ", $header."<br />"; //Affiche les informations générale //Récupère la taille en octets du fichier à télécharger if (preg_match("/Content-Length: (\d*)/",$header,$matches)) { $size = $matches[1]; echo $size."<br />"; } // Récupère le nom de fichier if (preg_match("/Content-Disposition:.*?filename=\"(.*)\"/",$header,$matches)) { $filename = $matches[1]; echo $filename."<br />"; } //Récupère le type de fichier (à traduire ensuite avec la bonne extension) elseif (preg_match('#Content-Type\: video/[x\-]*([a-z]+)[\s]+#i', $header, $matches)) { $type = $matches[1]; echo $type."<br />"; } return strlen($header); }
Maintenant, le hic c'est de pouvoir sortir $size, $filename et $type de cette fonction. J'ai pensé à le faire avec un tableau, mais le problème c'est que si j'enlève "return strlen($header);" il ne me lit plus le contenu du header...
tartefion
Messages postés
31
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
21 janvier 2011
7
5 janv. 2011 à 17:14
5 janv. 2011 à 17:14
Bonjour, pour "sortir" ces valeurs, utilisé un tableau est une bonne idée. Essai de terminer ta fonction par
$tableau = array($size,$filename,$type);
return $tableau;
Il faut savoir que ta fonction retournait à la base la taille de la chaine $header, du coup elle ne fera plus la même chose.
$tableau = array($size,$filename,$type);
return $tableau;
Il faut savoir que ta fonction retournait à la base la taille de la chaine $header, du coup elle ne fera plus la même chose.
ghFrankfurt
Messages postés
207
Date d'inscription
mardi 16 novembre 2010
Statut
Membre
Dernière intervention
10 décembre 2014
23
6 janv. 2011 à 08:47
6 janv. 2011 à 08:47
Le problème c'est que ça ne marche pas, car si j'enlève ce return strlen ($header);, la ligne echo "Read header: ", $header."<br />"; m'affiche uniquement "Read header: HTTP/1.1 200 OK " et du coup mes variables sont vide.
Alors que si je le laisse il me retourne :
Read header: HTTP/1.1 200 OK
Read header: Server: Apache
Read header: Last-Modified: Mon, 08 Nov 2010 20:24:26 GMT
Read header: Accept-Ranges: bytes
Read header: Content-Length: 19862325
19862325 <- contenu de la variable $size
Read header: Content-Type: video/quicktime
quicktime <- contenu de la variable $type
Read header: Expires: Thu, 06 Jan 2011 07:40:16 GMT
Read header: Cache-Control: max-age=0, no-cache, no-store
Read header: Pragma: no-cache
Read header: Date: Thu, 06 Jan 2011 07:40:16 GMT
Read header: Connection: keep-alive
Read header:
Et bien sur ça ne marche pas non plus avec
$tableau = array($size,$filename,$type, strlen($header));
return $tableau;
Alors que si je le laisse il me retourne :
Read header: HTTP/1.1 200 OK
Read header: Server: Apache
Read header: Last-Modified: Mon, 08 Nov 2010 20:24:26 GMT
Read header: Accept-Ranges: bytes
Read header: Content-Length: 19862325
19862325 <- contenu de la variable $size
Read header: Content-Type: video/quicktime
quicktime <- contenu de la variable $type
Read header: Expires: Thu, 06 Jan 2011 07:40:16 GMT
Read header: Cache-Control: max-age=0, no-cache, no-store
Read header: Pragma: no-cache
Read header: Date: Thu, 06 Jan 2011 07:40:16 GMT
Read header: Connection: keep-alive
Read header:
Et bien sur ça ne marche pas non plus avec
$tableau = array($size,$filename,$type, strlen($header));
return $tableau;