Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从URL获取远程文件的大小?_Php - Fatal编程技术网

Php 从URL获取远程文件的大小?

Php 从URL获取远程文件的大小?,php,Php,可能重复: 我想在用户输入上传到不同站点的文件链接时,从PHP中找到文件的大小。但是怎么做呢 strlen(file_get_contents($url_file)); 该函数是二进制安全的,因此您只需获取文件内容的长度。我假设您需要远程文件的大小。下面的PHP代码应该可以做到这一点: <?php // URL to file (link) $file = 'http://example.com/file.zip'; $ch = curl_init($fil

可能重复:

我想在用户输入上传到不同站点的文件链接时,从PHP中找到文件的大小。但是怎么做呢

strlen(file_get_contents($url_file));

该函数是二进制安全的,因此您只需获取文件内容的长度。

我假设您需要远程文件的大小。下面的PHP代码应该可以做到这一点:

<?php

    // URL to file (link)
    $file = 'http://example.com/file.zip';

    $ch = curl_init($file);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    $data = curl_exec($ch);
    curl_close($ch);

    if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {

        // Contains file size in bytes
        $contentLength = (int)$matches[1];

    }
?>


您首先需要获取文件的URL,对于MediaFire和其他文件共享网站,在满足免费用户等待期后,需要额外的代码才能获取。

mediafire
中的链接为例,如何在文件上传之前或之后获取大小?@robx:用户输入任何
mediafire
链接,然后我给他该文件的大小,除非远程服务器向您提供此信息,您必须首先实际下载文件(或者至少尝试获取可能告诉您大小的标题)。所以,“举例来说”有点太笼统了,它实际上取决于个别情况是否可能。您是否只关心MediaFire或任何文件?例如,如果您专门谈论MediaFire,您可以首先获取文件所在URL的内容。然后,使用正则表达式查找该页面上的文件大小:
if
$url\u file
指向40Gb blueray remux?有效点zerkms。他一定要检查URL是否有效。不过,我有另一个想法,我会更新我的答案以便更好(:或者,我将更新上面的评论。有效?什么是有效的url?每次文件超过内存限制时,您都会得到致命错误。@zerkms根据其应用程序的限制是有效的。我正要发布一个关于检查文件大小而不下载的答案,然后我看到您链接了它,所以我只是更新了您的评论。