gpt4 book ai didi

php - Laravel 验证 zip 文件内容

转载 作者:行者123 更新时间:2023-12-02 07:20:24 26 4
gpt4 key购买 nike

我只想接受扩展名为“.zip”的文件。我添加了一个规则 mime-type application/zip 来控制它。但我不知道它的内容,所以我需要检查 zip 文件的内容以避免未知文件。如何安全地控制 zip 文件的内容?

我正在使用 https://github.com/Chumper/Zipper提取和 laravel 版本是 5.5

public function store(Request $request, User $sharingUser) {
$rules = [
'patient_case_id' => 'required|exists:patient_cases,id',
'file' => 'required|mimes:zip,rar',
];
}

上传的 zip 文件的内容树如下:

xxxx - 主文件夹

|- aaaa.adf

|- bbbb.adf

|- cccc.adf

|- dddd.adf

|- aaaa.ocx

文件夹只能有 .adf 和 .ocx 文件...但我不知道文件夹中有多少个文件。

注意:它是一个 RESTful API

最佳答案

我建议您使用 PHP League's ZipArchive Adapter反而。

创建一个新的validation rule .在请求中设置规则,然后定义逻辑。

use League\Flysystem\Filesystem;
use League\Flysystem\ZipArchive\ZipArchiveAdapter;

$filesystem = new Filesystem(new ZipArchiveAdapter(getrealpath($value)));

passes() 方法中,设置文件系统以读取文件。我想你可能需要弄清楚临时存储中文件的路径 realpath($value).

然后充实检查的逻辑。您可以像这样遍历文件:

foreach ($filesystem->listContents() as $object) {
if (!in_array($object['mimetype'], ['mimetype1', 'mimetype2'])) {
return false;
}

}
return true;

我不记得 listContents() 是否递归地列出所有文件,但可能有一个选项可以做到这一点,请查看他们的文档。您不必使用 mimetype 比较,只需使用最有意义的内容即可。

关于php - Laravel 验证 zip 文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com