我有一个实现InputFilterProviderInterface
的字段集,因此它具有函数getInputFilterSpecification
。 __construct()
功能正在添加文件元素('徽标'),如下所示:
$this->add(array(
'name' => 'logo',
'type' => 'file',
'attributes' => array(
'required' => false,
'class' => 'form-control',
'id' => 'logo',
),
'options' => array(
'label' => 'Company Logo: ',
),
));
在我的getInputFilterSpecification
函数中,如何添加RenameUpload输入过滤器?
我尝试了以下几种变体而没有成功:
public function getInputFilterSpecification()
{
return array(
array(
'name' => 'logo',
'filterchain' => array(
'name' => 'filerenameupload',
'options' => array(
'target' => '/public/images/' . time(),
),
),
'required' => false,
),
//... other filters
}
}
如何添加FileRenameUpload过滤器(Zend\Filter\File\RenameUpload
)?
我已将数组更改为:
array(
'name' => 'logo',
'filters' => array(
array(
'name' => 'filerenameupload',
'options' => array(
'target' => '/public/images/' . time(),
),
),
),
'required' => false,
),
"出现"工作,但我现在收到这条消息 -
文件' C:\ xampp \ tmp \ phpDA68.tmp'无法重命名。一个错误 处理文件时发生。
可能发生了什么错误?我该如何解决?
答案 0 :(得分:0)
此问题是由指定无效的target
引起的。使用getcwd()
对其进行前缀使得路径相对于应用程序根目录。
array(
'name' => 'logo',
'filters' => array(
array(
'name' => 'filerenameupload',
'options' => array(
'target' => getcwd() . '/public/images/' . time(),
),
),
),
'required' => false,
),
答案 1 :(得分:0)
在使用renameFile之前,您必须已创建目录。
示例: mkdir($ rootPath。'/ public / images /'。time());