如何在PHP中验证通过URL上传的文件


How to validate files uploaded by URL in PHP

在系统中移动/上传之前如何验证文件。

我知道如何在一般情况下验证文件上传,但我正在寻找一个关于验证URL上传的文件的解决方案。

在这里,看看我的代码,它指的是获取文件并将其保存在我的系统中:-

$file_url = 'https://www.something.com/images/Image.png'; // URL of the image/File
$destination_url = '/pictures/pics/image.jpeg';

//我必须假设它是一个图像,并添加。jpeg如果不上传文件,我不知道如何验证。

$data = file_get_contents($file_url); //gets the content of the file.
file_put_contents($destination_url, $data); //finally moves the file to system

现在我可以做所有的事情,比如获取它的名称,大小,类型等等,但这不是重点,有没有办法在将文件移动到系统之前验证文件,因为这个过程在安全角度上真的很糟糕,考虑到任何人都可以上传任何大小/类型的文件。


在推荐任何库之前,请记住我使用的是laravel框架

您可以在实际下载文件内容之前使用get-headers()获取内容类型和文件大小等信息。

验证文件是否真的是它所说的,例如,检查。pdf文件实际上不是伪装的。zip文件,现在这是一个完全不同的故事,我恐怕没有通用的方法来检查

使用cURL检查文件的mime类型。http://php.net/manual/en/function.curl-getinfo.php