1

我将其与 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');
}

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

数组 ( [状态] => [消息] =>

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

我似乎一辈子都无法弄清楚如何将多个文件传递给 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

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

4

1 回答 1

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 解决方案对您很有效?通过这种方式,用户可以获得进度条,通知他们每次上传的状态,并且他们可以看到每次上传完成的时间。

于 2013-01-13T00:05:16.450 回答