2

我正在使用以下代码,但似乎有警告fseek并返回 -1 而不是 0。

$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 在远程文件中查找,您需要获取文件的大小。一种可能的方法是解释目录列表或发出HEAD请求。当您知道文件大小时,您可以像这里一样使用curlRange

这也是一种获取远程文件大小的方法。

如何使用 cURL 下载文件(此示例将数据加载到 PHP 变量中,仅在您想处理数据时使用,如果您只想将其保存到外部文件中,请使用 CURLOPT_FILE 而不是 CURLOPT_RETURNTRANSFER):

$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 回答