0

ftp ファイルを部分的にダウンロードしたい。ダウンロードする必要があるのは10MBと言えますが、100MBをスキップした後です(たとえば)。

PHP では、 http: //php.net/manual/en/function.ftp-fget.phpで、この関数は任意の開始点を許可します。

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

ただし、ダウンロードする「バイト数」を設定することはできません。

4

2 に答える 2

1

FTP 関数の代わりにストリーム ラッパーを使用して FTP 接続を開くことができるはずです(ファイルへのパスがわかっている場合)。

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

次に、通常のファイル機能を使用してファイルを開き、必要な情報を読み取ります。は使用できませんがfseek()fread()問題なく動作するはずです。

于 2010-05-09T04:15:49.167 に答える
1

--rangeこのオプションを cURLに渡して、リモート ファイルから一定範囲のバイトを取得できます。

コマンド ライン ツールがインストールされている場合は、次の方法curlで PHP から実行できます。shell_exec()

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

または、cURL 拡張機能が利用可能な場合は、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);

詳細については、cURL のマニュアルを参照してください。

于 2010-05-09T14:00:56.687 に答える