Another ftp_get_contents() approach, using a temperary stream handler. Returns file contents of remote file as string.
<?php
function ftp_get_contents ($conn_id, $remote_filename) {
//Create temp handler:
$tempHandle = fopen('php://temp', 'r+');
//Get file from FTP assuming that it exists:
ftp_fget($conn_id, $tempHandle, $remote_filename, FTP_ASCII, 0));
//Getting detailed stats to check filesize:
$fstats = fstat($tempHandle);
return fread($tempHandle, $fstats['size']);
}
?>
(It is recommended to add some error handling)
fstat
(PHP 4, PHP 5)
fstat — オープンしたファイルポインタからファイルに関する情報を取得する
説明
array fstat
( resource $handle
)
ファイルポインタhandle によりオープンされたファイルの統計情報を取得します。 この関数は関数stat()に似ていますが、 ファイル名の代わりにオープンされたファイルポインタを指定するところが異なります。
返り値
ファイルの統計情報の配列を返します。配列のフォーマットについては stat()のマニュアルをご覧ください。
例
例1 fstat() の例
<?php
// ファイルをオープンする
$fp = fopen("/etc/passwd", "r");
// 統計情報を収集する
$fstat = fstat($fp);
// ファイルをクローズする
fclose($fp);
// 連想配列部のみ表示する
print_r(array_slice($fstat, 13));
?>
上の例の出力は、たとえば 以下のようになります。
Array ( [dev] => 771 [ino] => 488704 [mode] => 33188 [nlink] => 1 [uid] => 0 [gid] => 0 [rdev] => 0 [size] => 1114 [atime] => 1061067181 [mtime] => 1056136526 [ctime] => 1056136526 [blksize] => 4096 [blocks] => 8 )
注意
注意: この関数では、 リモートファイル を 使用することはできません。これは、処理されるファイルがサーバの ファイルシステムによりアクセスできる必要があるためです。
fstat
broom at alturnanetworks dot com
03-Oct-2008 12:21
03-Oct-2008 12:21
mordae at mordae dot net
29-Jan-2006 04:12
29-Jan-2006 04:12
dom at dodgydom dot com wrote:
Best way i found was to open the url into $data and make a temporary file with the contents of $data then get the fstats on the temporary file :).
OMG why? The only thing that will remain is the file size. You also download up to 1G file, which probably is not what you want.
To get size use PHP's function filesize() with URL wrappers or ask yourself via HTTP.
sheran at comtrust dot co dot ae
22-Feb-2001 02:14
22-Feb-2001 02:14
On Windows NT the typical array element names for the fstat function are:
dev
ino
mode
nlink
uid
gid
size
atime
mtime
ctime
