File Can';无法在zf2中进行上传。文件始终无效?
我正在尝试创建一个控制器,为我上传一个文件,但我总是得到相同的结果。该文件无效,因此他无法上载 我的控制器中的功能是:File Can';无法在zf2中进行上传。文件始终无效?,file,validation,upload,frameworks,zend-framework2,File,Validation,Upload,Frameworks,Zend Framework2,我正在尝试创建一个控制器,为我上传一个文件,但我总是得到相同的结果。该文件无效,因此他无法上载 我的控制器中的功能是: $upload = new \Zend\File\Transfer\Transfer(); $upload->setDestination('./data/images/uploads/'); $rtn = array('success' => null); if ($this->getRequest()->isPost())
$upload = new \Zend\File\Transfer\Transfer();
$upload->setDestination('./data/images/uploads/');
$rtn = array('success' => null);
if ($this->getRequest()->isPost()) {
$files = $upload->getFileInfo();
foreach ($files as $file => $info) {
if (!$upload->isUploaded($file)) {
print "<h3>Not Uploaded</h3>";
\Zend\Debug\Debug::dump($file);
continue;
}
if (!$upload->isValid($file)) {
print "<h4>Not Valid</h4>";
\Zend\Debug\Debug::dump($file);
continue;
}
}
$rtn['success'] = $upload->receive();
}
return new \Zend\View\Model\JsonModel($rtn);
正如您在中所看到的,使用Zend\file\Transfer
上传文件已被弃用,取而代之的是使用标准ZF2Zend\Form
和Zend\InputFilter
功能
话虽如此,您应该使用Zend\Filter\File\RenameUpload
移动上传的文件。您只需将Zend\Filter\File\RenameUpload
过滤器附加到InputFilter
规范,如下所示:
if ($this->request->isPost()) {
$post = array_merge_recursive(
$this->request->getPost()->toArray(),
$this->request->getFiles()->toArray()
);
$form->setData($post);
if ($form->isValid()) {
// File uploaded and moved to data/uploads folder
}
}
在控制器操作中:
请查看中的完整示例
Array
(
[files_0_] => Array
(
[name] => logo_welcome.gif
[type] => image/gif
[tmp_name] => /private/var/tmp/phpiufvIc
[error] => 0
[size] => 62935
[options] => Array
(
[ignoreNoFile] =>
[useByteString] => 1
[magicFile] =>
[detectInfos] => 1
)
[validated] =>
[received] =>
[filtered] =>
[validators] => Array
(
[0] => Zend\Validator\File\Upload
)
[destination] => ./data/images/uploads
)
)
$this->add([
'name' => 'file',
'type' => 'Zend\InputFilter\FileInput',
'filters' => [
[
'name' => 'FileRenameUpload',
'options' => [
'target' => realpath('./data/uploads/'),
'randomize' => true,
'use_upload_extension' => true,
],
],
],
]);
if ($this->request->isPost()) {
$post = array_merge_recursive(
$this->request->getPost()->toArray(),
$this->request->getFiles()->toArray()
);
$form->setData($post);
if ($form->isValid()) {
// File uploaded and moved to data/uploads folder
}
}