2010-05-09 4 views
0

Je veux télécharger partiellement un fichier ftp. J'ai juste besoin de télécharger disons 10 Mo, mais après avoir sauté 100 Mo (par exemple).Comment faire un ftp partiel sur un fichier (en utilisant ftp, wget avec des scripts shell ou php)?

en php, http://php.net/manual/en/function.ftp-fget.php cette fonction permet le point de départ de arbitay:

bool ftp_fget ( resource $ftp_stream , resource $handle , string $remote_file , int $mode [, int $resumepos = 0 ]) 

mais il ne me permet pas de régler « le nombre d'octets » je veux télécharger.

Répondre

1

Vous devriez être en mesure d'ouvrir une connexion FTP en utilisant un stream wrapper au lieu des fonctions FTP (en supposant que vous connaissiez le chemin d'accès au fichier). Ensuite, utilisez simplement les fonctions de fichier normales pour ouvrir le fichier et lire les informations que vous voulez. Vous ne pouvez pas utiliser fseek(), mais fread() devrait fonctionner très bien.

1

Vous pouvez passer l'option --range à cURL pour récupérer une plage d'octets à partir d'un fichier distant.

Si vous avez l'outil de ligne de commande curl installé, vous pouvez l'exécuter à partir de PHP en utilisant shell_exec() cette façon:

$bytes3to4 = shell_exec("curl --range 3-4 ftp://ftp.example.com/pub/file.txt"); 

Ou si l'extension cURL est disponible, vous pouvez l'utiliser directement à partir de PHP:

$ch = curl_init("ftp://ftp.example.com/pub/file.txt"); 

curl_setopt($ch, CURLOPT_RANGE, "3-4"); // fetch bytes 3 to 4 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

$bytes3to4 = curl_exec($ch); 

Voir the cURL manual pour les détails

Questions connexes