[PHP] nom du fichier à télécharger avec cURL
ghFrankfurt
Messages postés
227
Statut
Membre
-
ghFrankfurt Messages postés 227 Statut Membre -
ghFrankfurt Messages postés 227 Statut Membre -
Bonjour,
Je viens de découvrir cURL et je voudrais savoir s'il y a un un moyen de récupérer le nom du fichier à télécharger.
Merci :)
Je viens de découvrir cURL et je voudrais savoir s'il y a un un moyen de récupérer le nom du fichier à télécharger.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_POST['url']);
$fp = fopen('fichier.ext', 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec ($ch);
curl_close ($ch);
fclose($fp);
Merci :)
A voir également:
- [PHP] nom du fichier à télécharger avec cURL
- Fichier bin - Guide
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
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 ?
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...
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.
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;