-2

我有一个正在实施的字段集InputFilterProviderInterface。我的getInputFilterSpecification功能如下所示:

public function getInputFilterSpecification() {
    $validator = new \Zend\Validator\File\Extension([
        'jpg',
        'jpeg',
        'png',
        'gif',
    ]);
    return [
        [
            'name' => 'logo',
            'required' => false,
            'validators' => [
                $validator,
            ],
        ],
    ];
}

您可以猜到,我正在尝试按扩展名验证文件上传。

我的问题是验证器给出了错误消息

文件不可读或不存在

查看Extension课程,我发现了导致问题的函数:stream_resolve_include_path($file). 当我var_dump $file得到以下输出时:

C:\Windows\Temp\php6BE7.tmp

那么...为什么stream_resolve_include_path无法解决此路径?我如何解决它?

这当前在 Windows 虚拟机上运行。这是问题的一部分吗?即上述功能仅适用于兼容的操作系统?

4

1 回答 1

0

短期解决方案 - 扩展验证器并覆盖isValid函数。

找到这一行:

if (empty($file) || false === stream_resolve_include_path($file)) {

并将其替换为:

if (empty($file) || false === is_file($file)) {

于 2017-03-07T12:04:45.927 回答