我创建了一个包含文件上传字段的表单,并尝试按如下方式上传文件:
$adapter = new \Zend\File\Transfer\Transfer();
$adapter->addValidator(‘Count’,false, array(‘min’=>1, ‘max’=>3))
->addValidator(‘Size’,false,array(‘max’ => 10000))
->addValidator(‘Extension’,false,array(‘extension’ => ‘txt’,’case’ => true));
$adapter->setDestination('images/');
$files = $adapter->getFileInfo();
foreach($files as $fieldname=>$fileinfo)
{
if (($adapter->isUploaded($fileinfo[name]))&& ($adapter->isValid($fileinfo[‘name’])))
{
$adapter->receive($fileinfo[name]);
//then, store links etc in db for retrieval later..
}
}
var_dump($adapter->getMessages());
我收到了错误:
Zend\File\Transfer\Adapter\ValidatorPluginManager::get was unable to fetch or create an instance for ‘Count’
我如何解决这个问题并使其可行?
答案 0 :(得分:0)
您的代码中存在一些错误。首先
new \Zend\File\Transfer\Transfer();
不是适配器,而是传输适配器管理器。
你不应该用它来命名你的变量。让我们纠正并解释。
//We initialize the transfer adapter manager
$transferService = new \Zend\File\Transfer\Transfer();
//We fetch the matching adapter
//the doc says that the param is to be set to true to fetch upload adapter, false for download adapter, null for both.
//For us it's true
$adapter = $transferService->getAdapter(true);
//Now the rest should be working fine
$adapter->addValidator(‘Count’,false, array(‘min’=>1, ‘max’=>3))
->addValidator(‘Size’,false,array(‘max’ => 10000))
->addValidator(‘Extension’,false,array(‘extension’ => ‘txt’,’case’ => true));
$adapter->setDestination('images/');
$files = $adapter->getFileInfo();
foreach($files as $fieldname=>$fileinfo)
{
if (($adapter->isUploaded($fileinfo[name]))&& ($adapter->isValid($fileinfo[‘name’])))
{
$adapter->receive($fileinfo[name]);
//then, store links etc in db for retrieval later..
}
}
var_dump($adapter->getMessages());
由于文档在这个主题上并没有真正完整,你真的应该深入研究代码,看看它是如何完成的。它很快就能理解。
希望这有帮助