我与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);
}
}
}
我已经尝试了很多不同的东西,以至于我的头在旋转,现在试图掌握这一点。所以,如果有人可以提供帮助,我们将不胜感激。
答案 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解决方案对你有用吗?这样,用户就可以获得进度条,告知他们每个上传的状态,并且他们可以看到每次上传完成的时间。