php - 在通过 HTTP 下载数据之前确定文件大小

标签 php http curl

这可能吗?我目前正在使用 cURL 库在 PHP 中进行编码,但这更适用于整个 HTTP。

最明显的方法听起来像是向数据 URL 发出 HEAD 请求并读取其 Content-Length header ,但问题是包括 apache 2.0 在内的某些服务器不会针对 HEAD 请求发送 Content-Length 并且由于它不是强制性的,即使在 GET 请求时,也不能保证所有服务器都会回复此类信息。

我正在让服务器下载用户输入指定的网页并将其存储在服务器上,但我不想让它下载任何请求只是为了发现文件太大而无法在所有内容下载后丢弃以窒息来自恶意请求的带宽。 所以我想在数据实际传输之前可靠地知道内容的大小。

恶意 Web 服务器发送错误的 Content-Length 的情况和那些轻微的奇怪情况与我无关,如果它适用于所有其他一般情况。

到目前为止,在我看来最糟糕的想法是实际上只使用 GET 请求下载内容,如果它超过传输期间指定的大小限制,就断开连接,但这听起来像是一个非常丑陋的通用协议(protocol)解决方案作为 HTTP。

有没有人有更好的想法?

最佳答案

不,服务器不必告诉您他们将要为您服务的资源的大小,因为他们自己可能不知道。所以不,没有通用的方法,但是是的,您可以尝试在提供时查找 Content-length header 。

关于php - 在通过 HTTP 下载数据之前确定文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1476034/

相关文章:

c++ - Linux c++ : getaddrinfo failed with EAI_AGAIN, curl 无法解析主机

php - 在创建的 PNG 图像上设置 DPI 的干净解决方案

php - 无法从本地机器与 cURL/PHP 建立 SSL 连接,从网络服务器工作

php - 是否可以断开 http 客户端与 PHP 的连接?

java - HTTP 代理连接共享

php - 无法限制 PHP 的 cURL 函数的下载大小

php - cURL 循环内存增长

php - 如何在段落中查找并添加粗体字符串?

php - 使用 TCPDF 创建 PDF 在第 16928 行显示未定义索引 : cols in tcpdf/tcpdf. php

java - 获取给定标题的网站的总 cookie 大小