【问题标题】:Struggling To Use PyroCMS Files Library To Upload Multiple Files努力使用 PyroCMS 文件库上传多个文件
【发布时间】:2013-01-11 10:37:01
【问题描述】:

我将其与 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

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

【问题讨论】:

    标签: php file-upload pyrocms multifile-uploader


    【解决方案1】:

    文件库目前不支持一个元素上传多个文件。所以它试图从“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 解决方案对您很有效?这样用户就可以看到进度条,通知他们每次上传的状态,并且他们可以看到每次上传完成的时间。

    【讨论】:

    • 现在已经使用 BlueImp 对其进行了排序。感谢您为我指明正确的方向 Jerel。
    • 这很可悲,我很害怕。 :( 你确认你不能用这样的名字吗?&lt;input name="userfile[]" type="file" /&gt; &lt;input name="userfile[]" type="file" /&gt;
    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 2022-01-05
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2013-09-29
    • 1970-01-01
    相关资源
    最近更新 更多