这可能吗?我目前正在使用 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/