Php Codeigniter使用HTML5进行多文件上传,可以使用Uploadify等工具完成吗?

Php Codeigniter使用HTML5进行多文件上传,可以使用Uploadify等工具完成吗?,php,codeigniter,uploadify,codeigniter-2,Php,Codeigniter,Uploadify,Codeigniter 2,是否可以只使用HTML5和PHP进行多文件上传?我希望我可以选择多个文件,将它们存储在一个循环中,然后遍历所有文件并将它们上传到服务器 但是Codeigniter只上传我选择的第一个文件 foreach ($_FILES as $key => $value) { $this->upload->do_upload($key['name']) } 我有额外的逻辑来处理诸如上传路径和文件名之类的东西,但是代码很好,但是这个循环似乎只适用于第一个select文件,其他什么

是否可以只使用HTML5和PHP进行多文件上传?我希望我可以选择多个文件,将它们存储在一个循环中,然后遍历所有文件并将它们上传到服务器

但是Codeigniter只上传我选择的第一个文件

foreach ($_FILES as $key => $value)
{
      $this->upload->do_upload($key['name'])
}
我有额外的逻辑来处理诸如上传路径和文件名之类的东西,但是代码很好,但是这个循环似乎只适用于第一个select文件,其他什么都不适用

如果不能使用HTML5和php,我将只使用Uploadify,或者有没有办法修改Upload类以支持多文件上传

这或多或少是我的方法

public function uploadScreens($id) {
$this->load->library('upload');
$config['allowed_types'] = '*';
$config['max_size'] = '45000';
$config['max_width'] = '20000';
    $config['max_height'] = '15000';
foreach ($_FILES as $key => $value)
    {
    if (!empty($key['name']))
            {
                $this->db->set('gameid', $id);
        $this->db->insert('gamescreens');
                $screenid = $this->db->insert_id();

                $this->createDirectory($screenid);
                $filename = $this->randomFilename();
                $config['file_name'] = "$filename";
                $config['upload_path'] = APPPATH . "../content/gamescreens/" . $screenid . '/';
                $this->upload->initialize($config);

                if ($this->upload->do_upload($key['name']))
                {
                    $data = $this->upload->data();
                    $sourceurl = $data["full_path"];
                    $this->db->simple_query("update gamescreens set source = '$sourceurl' Where id=$screenid");
        }
                else
                {
                    //catch eerrors
                }
            }
    }

}这是关于CodeIgniter的常见问题。要在CI中上载多个文件,需要调用
$this->upload->initialize($config)在循环中。

这是有关CodeIgniter的常见问题。要在CI中上载多个文件,需要调用
$this->upload->initialize($config)在循环中。

据我所知,在使用uploadify时,您不必使用CI处理多个文件。因为uploadify将逐个上载文件(uploadify队列),每个文件调用一次控制器操作

我在上载控制器中使用此操作上载10个图像文件

/**
 * Upload Action.
 */
public function upload()
{
    $targetFolder = '/uploads'; // Relative to the root

    if (!empty($_FILES)) {


        // Validate the file type
        $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
        $fileParts = pathinfo($_FILES['Filedata']['name']);

        $tempFile = $_FILES['Filedata']['tmp_name'];
        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
        $targetName = uniqid() . '.' . $fileParts['extension'];
        $targetFile = rtrim($targetPath,'/') . '/' . $targetName;

        if (in_array($fileParts['extension'],$fileTypes)) {
            move_uploaded_file($tempFile, $targetFile);
            echo $targetName;
        } else {
            echo 'Invalid file type.';
        }
    }
}
这是我上传的客户端配置

// create file uploader
$('#file_upload').uploadify({
    'swf'      : '/swf/uploadify.swf',
    'uploader' : YOUR_CONTROLLER + '/upload',
    'uploadLimit' : 10,
    'onUploadSuccess' : function(file, data, response) {
        // do stuff where a file is uploaded
    },
    'onQueueComplete' : function(data) {
        // do stuff when queue done
    }
});

希望有帮助。

据我所知,在使用uploadify时,您不必使用CI处理多个文件。因为uploadify将逐个上载文件(uploadify队列),每个文件调用一次控制器操作

我在上载控制器中使用此操作上载10个图像文件

/**
 * Upload Action.
 */
public function upload()
{
    $targetFolder = '/uploads'; // Relative to the root

    if (!empty($_FILES)) {


        // Validate the file type
        $fileTypes = array('jpg','jpeg','gif','png'); // File extensions
        $fileParts = pathinfo($_FILES['Filedata']['name']);

        $tempFile = $_FILES['Filedata']['tmp_name'];
        $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
        $targetName = uniqid() . '.' . $fileParts['extension'];
        $targetFile = rtrim($targetPath,'/') . '/' . $targetName;

        if (in_array($fileParts['extension'],$fileTypes)) {
            move_uploaded_file($tempFile, $targetFile);
            echo $targetName;
        } else {
            echo 'Invalid file type.';
        }
    }
}
这是我上传的客户端配置

// create file uploader
$('#file_upload').uploadify({
    'swf'      : '/swf/uploadify.swf',
    'uploader' : YOUR_CONTROLLER + '/upload',
    'uploadLimit' : 10,
    'onUploadSuccess' : function(file, data, response) {
        // do stuff where a file is uploaded
    },
    'onQueueComplete' : function(data) {
        // do stuff when queue done
    }
});

希望有帮助。

我不使用uplodify上传多个文件

但是我用

和编辑litlle关于多上传库 还有一些问题

它可以加载多个文件,但我不知道“上传文件数据”有什么问题,它只是显示“从上次上传的文件加载数据文件”


我希望这将对您有所帮助,如果您可以解决此问题,请让我知道

我不使用uplodify上载多个文件

但是我用

和编辑litlle关于多上传库 还有一些问题

它可以加载多个文件,但我不知道“上传文件数据”有什么问题,它只是显示“从上次上传的文件加载数据文件”


我希望这将对您有所帮助,如果您可以解决此问题,请让我知道

基于您的代码示例,我看到以下问题:

foreach ($_FILES as $key => $value)
{
      $this->upload->do_upload($key['name'])
}

我认为应该是
$value['name']
,不是真的吗?

根据您的代码示例,我发现以下问题:

foreach ($_FILES as $key => $value)
{
      $this->upload->do_upload($key['name'])
}

我相信这应该是
$value['name']
,不是真的吗?

我以前有过它,但它不会进行多文件上传。我已经用我的方法更新了我的代码。我不这么认为,我只是选择了多个文件。并且在视图中有一个输入标记。我以前在循环中有它,但它不会进行多文件上传。我已经用我的方法更新了我的代码。我不这么认为,我只是选择了多个文件。并且在视图中有一个输入标记。