我有一个正在实施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虚拟机上运行。这是问题的一部分吗?即上述功能仅适用于兼容的操作系统?
答案 0 :(得分:0)
短期解决方案 - 扩展验证程序并覆盖isValid
函数。
找到这一行:
if (empty($file) || false === stream_resolve_include_path($file)) {
并将其替换为:
if (empty($file) || false === is_file($file)) {