首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP函数stat():stat对远程映像失败

PHP函数stat():stat对远程映像失败
EN

Stack Overflow用户
提问于 2018-08-03 14:26:39
回答 3查看 915关注 0票数 0

许多 相似 问题 to ,但都涉及对本地文件执行stat()或filesize(),因为需要完整的路径,这些文件无法工作。

这个问题是不同的,因为我有少量的远程图像,它们都有完整的路径,而且我仍然无法检索它们的大小。下面是一个示例:

代码语言:javascript
复制
stat("https://cdn-img.health.com/sites/default/files/1532113674/1-opener-sleep-a-z-GettyImages-485559412.jpg");

这会引发一个错误,说明"stat失败“。我也无法从filesize()函数中获取图像大小,无法检索“内容长度”或“X-原始内容-长度”标题(未传递),也无法对图像进行卷曲并检索CURLINFO_CONTENT_LENGTH_DOWNLOAD字段。类似地,在Ruby中,除了机械化库外,我无法用传统的方法获得这个图像的大小,这个库只是起作用。下面是示例中图像的标题:

代码语言:javascript
复制
HTTP/1.1 200 OK
Content-Type:   image/jpeg
Transfer-Encoding:  chunked
Connection: keep-alive
Cache-Control:  max-age=1800
Date:   Fri, 03 Aug 2018 14:08:39 GMT
ETag:   "90c755-5717304f98380-gzip"
Expires:    Fri, 03 Aug 2018 14:38:39 GMT
Last-Modified:  Fri, 20 Jul 2018 19:08:22 GMT
P3P:    CP='PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA PRE CUR ADMa DEVa TAIo PSAo PSDo IVAo IVDo CONo TELo OTPi OUR UNRo PUBi OTRo IND DSP CAO COR'
Server: Apache
TI-Varnish-Age: 0
Via:    1.1 varnish, 1.1 ba150248cd293ea895c35304503c9f27.cloudfront.net (CloudFront)
X-Varnish:  1920400558
Vary:   Accept-Encoding
Age:    19
X-Cache:    Hit from cloudfront
X-Amz-Cf-Id:    pKXUfsB5egUfk4Te7oxIG7TgFLoUfMSUWqGZxd5822_ejvorITbFsg==

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-03 14:54:06

您可以通过以下操作获得大小:

代码语言:javascript
复制
strlen(file_get_contents('http://link.of/image.jpg'));

只要您启用了allow_url_fopen,它就能工作。否则,您需要使用cURL。

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 14:52:58

为了使stat()从PHP手册中确定底层包装器需要支持的远程文件的文件大小

从PHP5.0.0开始,这个函数也可以与一些URL包装一起使用。请参阅支持的协议和包装器,以确定哪些包装器支持stat()系列功能。

如果在文档中查找HTTP包装器

支持stat() -否

大多数以文件为参数的函数依赖包装器来执行远程操作,因此这些函数都无法获得远程文件大小。如果您可以使用该扩展,那么cURL函数可能是您的最佳选择。

票数 2
EN

Stack Overflow用户

发布于 2018-08-03 15:02:33

您可以使用curl获取文件信息,如果您想在任何url处获取任何文件的大小,请使用以下函数:

代码语言:javascript
复制
            function getFileSizeByCurl($url) {  
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_VERBOSE, 1);
                curl_setopt($ch, CURLOPT_HEADER, 1);
                $response = curl_exec($ch);
                return curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD);
            }


                            //Calling a function 
            echo getFileSizeByCurl('https://cdn-img.health.com/sites/default/files/1532113674/1-opener-sleep-a-z-GettyImages-485559412.jpg');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51674784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档