0

PHPでのカスタムFTPラッパーの作成についてサポートが必要です。

使用しました

$h=fopen('ftp://....');

しかし、これはすべてのFTPサーバーでうまく機能するわけではなく(アクティブ/パッシブモードで問題が発生することもあります)、ラッパーでこれを制御することはできません。

http://php.net/manual/en/book.ftp.phpの関数を使用していますが、すべて正常に機能します。PHPFTPラッパーを使用したダウンロードでのみ問題が発生します。

ダウンロードしたファイルをディスクに保存したくないので、ラッパーを使用する必要があります。ストリームからファイルの一部を読み取り、ユーザーのブラウザに出力します。

だから私はPHPでカスタムFTPラッパーを作成したいと思います。そして何よりも、それがhttp://php.net/manual/en/book.ftp.phpの関数に基づいている場合です。

そこに例がありますhttp://php.net/manual/en/function.ftp-fget.php

function ftp_get_contents ($conn_id, $filename, 
//Create temp handler: 
     $tempHandle = fopen('php://temp', 'r+'); 

//Get file from FTP assuming that it exists: 
     ftp_fget($conn_id, $tempHandle, $filename, FTP_ASCII, 0)); 

     //Getting detailed stats to check filesize: 
     $fstats = fstat($tempHandle); 

     return fread($tempHandle, $fstats['size']); 
 }

しかし、これは完全なファイルをディスクに保存するので良くありません。この後、ローカルファイルから読み取ることができます。

このようなことを知っていますが、ファイル全体をローカルにキャッシュせずに、FTPサーバーから一部のファイルを読み取ることができますか?

ありがとう。

4

1 に答える 1

0

解決策を見つけました。

私がやります

$h=popen('wget -q -O - ftp://.....','r');

それは正常に動作します。ただし、wget をインストールする必要があります。

于 2013-01-17T13:37:12.120 に答える