2

次のコードを使用していますが、警告が表示されfseek、0ではなく-1が返されます。

$file = fopen("http://www.example.com/public_html/data/video/temp.mov", "r") or exit("unable to open file");
fseek($file, -128, SEEK_END);

ファイルは確実に開かれますが、fseek機能しません。サーバーからビデオを読み取る他の方法はありますか?

以下はエラーメッセージです

Warning: filesize() [function.filesize]: stat failed for 

Warning: fseek() [function.fseek]: stream does not support seeking in 
4

1 に答える 1

3

プラットフォームに依存する問題であるに違いありません。このコードを試してください:

$filename = "www.example.com/public_html/data/video/temp.mov";
$file = fopen ($filename, "r")
    or exit("unable to open file");
fseek ($file, filesize ($filename) - 128);

HTTPラッパーはシークをサポートしていません。HTTPを介してリモートファイルを検索する場合は、ファイルのサイズを取得する必要があります。考えられる方法の1つは、ディレクトリリストを解釈するか、HEAD要求を行うことです。ファイルサイズがわかっている場合は、ここのようにcurlRangeを使用できます。

これは、リモートファイルサイズを取得する方法でもあります。

cURLを使用してファイルをダウンロードする方法(この例では、データをPHP変数にロードします。データを処理する場合にのみ使用します。外部ファイルに保存する場合は、CURLOPT_RETURNTRANSFERではなくCURLOPT_FILEを使用します)。

$c = curl_init (); 
curl_setopt ($c, CURLOPT_URL, "http://example.com/some_dir/some_file.ext"); 
curl_setopt ($c, CURLOPT_RANGE, max (0, $filesize - 128) . '-' . max (0, $filesize - 1));
curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec ();
echo ($content);
于 2011-03-28T12:05:23.730 に答える