在zend framework2中上载文件时出错

时间:2017-05-31 08:27:19

标签: file-upload zend-framework2 adapter

我创建了一个包含文件上传字段的表单,并尝试按如下方式上传文件:

    $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’

我如何解决这个问题并使其可行?

1 个答案:

答案 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());

由于文档在这个主题上并没有真正完整,你真的应该深入研究代码,看看它是如何完成的。它很快就能理解。

希望这有帮助