苦苦挣扎使用PyroCMS文件库上传多个文件

时间:2013-01-11 10:37:02

标签: php file-upload pyrocms multifile-uploader

我与PyroCMS论坛交叉发布此信息,以便向更广泛的受众寻求帮助,因为我似乎无法理解它。

当我尝试使用PyroCMS文件库上传多个文件时,我遇到了问题。我可以看到在调用库时单独上传文件,我还可以在绕过库并通过move_uploaded_file进行测试时上传文件。我在控制器中创建了以下(略微剥离)代码:

public function upload($id)
{
    // Folder selected or redirect
    $id or redirect('admin/mis/resources');

    // Run on validation
    if ($_FILES)
    {
        if (count($_FILES['userfile']['name'] > 0))
        {                
            foreach ($_FILES['userfile']['name'] as $file)
            {                    
                $upload = Files::upload($id, $file);
            }
        }                                  

        redirect('admin/vle/resources/contents/'.$id);            
    }

    $this->template->build('admin/resources/upload');
}

但是,在运行此代码时,不会上载任何文件。如果我输出上传,我会收到以下消息:

数组([status] => [message] =>

您没有选择要上传的文件。

我似乎无法为我的生活解决如何将多个文件传递给Files :: upload。我确定我错过了什么。然而,并不是因为我一般都无法上传文件,因为如果我为了测试目的将代码更改为本地,我的文件上传就好了:

if($_FILES)
{
    if(count($_FILES['userfile']['name'])) 
    {
        foreach ($_FILES['userfile']['name'] as $file) 
        {
            $img = "c:/wamp/www/testupload/files/".$file;

            move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $img);
        }
    }   
}

文件库的上传方法在https://github.com/pyrocms/pyrocms/blob/2.2/develop/system/cms/modules/files/libraries/Files.php#L333

我已经尝试了很多不同的东西,以至于我的头在旋转,现在试图掌握这一点。所以,如果有人可以提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

文件库目前不支持由一个元素上传的多个文件。因此,它试图从“userfile”文件输入而不是文件数组中找到单个文件。

这应该有效:

<form method="post" action="/upload/1" enctype="multipart/form-data">
    <input name="userfile" type="file"/>
    <input name="secondfile" type="file"/>
</form

public function upload($folder_id)
{
    $upload = Files::upload($folder_id, 'Descriptive Name', 'userfile');
    $second_upload = Files::upload($folder_id, 'Some Name', 'secondfile');
}

PyroCMS的管理面板使用BlueImp jQuery上传器上传多个文件。也许这样的JS解决方案对你有用吗?这样,用户就可以获得进度条,告知他们每个上传的状态,并且他们可以看到每次上传完成的时间。