[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;