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

Posted

技术标签:

【中文标题】如何在 PHP 中验证通过 URL 上传的文件【英文标题】:How to validate files uploaded by URL in PHP 【发布时间】:2017-02-08 19:35:30 【问题描述】:

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

我一般都知道如何验证文件上传,但我正在寻找有关验证通过 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 框架。

【问题讨论】:

验证文件是什么意思?检查文件扩展名是否为系统允许的扩展名之一,或检查文件大小是否超过一定限制,或检查文件内容是否与扩展名匹配,...? 嘿,伙计,没错,他们三个。 【参考方案1】:

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

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

【讨论】:

这是一个很棒的功能,我不知道,这就是我对 *** 感觉最好的地方,你永远无法预料到任何事情。干杯伙伴。【参考方案2】:

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

【讨论】:

以上是关于如何在 PHP 中验证通过 URL 上传的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将媒体文件的 URL 限制为 Django 中未经身份验证的用户?

如何验证文件大小上传php mysql

在 DRUPAL 中验证 PDF 文件上传中的 MIME 类型

Laravel - 超过 PHP 最大上传大小限制时验证文件大小

在php中如何上传视频

php版ueditor如何实现文章图片一起上传