Nasıl kısmen (ftp kullanarak, kabuk komut dosyaları veya php ile wget) bir dosyayı ftp?

2 Cevap php

i kısmen bir ftp dosya indirmek istiyor. ben sadece 10MB Diyelim indirmek gerekir, ancak (örneğin) 100MB atlama sonra.

Php, http://php.net/manual/en/function.ftp-fget.php Bu fonksiyon arbitay başlangıç ​​noktası sağlar:

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

ancak bana ben indirmek istiyorum "kaç bayt" ayarlamanıza izin vermez.

2 Cevap

Bir stream wrapper yerine kullanarak FTP işlevleri (dosyanın yolunu biliyorum varsayarak) bir FTP bağlantısı açmak gerekir.

$fh = fopen('ftp://user:password@example.com/pub/file.txt', 'r');

Sonra sadece dosyasını açın ve istediğiniz bilgileri okumak için normal dosya işlevlerini kullanabilirsiniz. Sen fseek() kullanamazsınız, ancak fread() sadece iyi çalışması gerekir.

Sen cURL uzak bir dosyadan bayt bir dizi almak için için --range seçeneğini iletebilirsiniz.

Eğer curl komut satırı aracı yüklü varsa, shell_exec() Bu şekilde PHP kullanarak çalıştırabilirsiniz:

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

Ya da cURL uzantısı varsa PHP doğrudan kullanabilirsiniz:

$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);

the cURL manual Detaylar için bakınız