我正在为我的网络用户提供一个工具,他们可以从网址上传他们的个人资料图片,而不是从计算机上传。我在这里看到一个恶作剧的用户可以提供一个巨大的文件的网址,或者可能是一些标记为/dev/random
的网址,非常不可能,但可能会发生。有没有办法在将文件完全提取到服务器之前确定文件的大小?
答案 0 :(得分:1)
根据您抓取远程文件的操作,您可以执行不同的操作。
file_get_contents('http://foobar.com')
非常方便,但它可以为您提供最少的控制权。我不知道你怎么能做一个HEAD请求来获取前面的Content-Length
标题。fsockopen()
会让你哭泣。 卷曲,好吧,卷曲。它和强大的一样丑陋。还有其他选项,比如HTTP Pecl(基本上包裹curl)。
CURLOPT_READFUNCTION
以便能够中止下载。如果(1)得出结果,你也应该检查一下,因为这个结果可能是欺骗性的。在最糟糕的情况下,您将获得1个HEAD和1个GET请求以获取Content-Length,以及另一个下载$ yourLimit字节的GET请求。
答案 1 :(得分:0)
检查服务器响应中的Content-Length
标头。