【问题标题】:codeigniter multiple uploadcodeigniter 多次上传
【发布时间】:2011-10-24 14:08:22
【问题描述】:

我正在尝试上传 3 张图像并在每次上传图像时调整它们的大小我将图像名称放入数组 images,但是在方法结束时,当我 print_r($images) 我只得到最后上传的图片的名称,谁能告诉我这是为什么?

这是我的代码,

// lets get rid of any old configs
                    $secondaryConfig['upload_path'] = './media/uploads/news/';
                    $secondaryConfig['allowed_types'] = 'gif|jpg|png';
                    $secondaryConfig['max_size']    = '4000';
                    $secondaryConfig['max_width']  = '230';
                    $secondaryConfig['max_height']  = '120';

                    $secondaryManipulationConfig['image_library'] = 'gd2';
                    $secondaryManipulationConfig['create_thumb'] = FALSE;
                    $secondaryManipulationConfig['maintain_ratio'] = TRUE;
                    $secondaryManipulationConfig['width'] = 132;
                    $secondaryManipulationConfig['height'] = 80;


                    //image_1
                    $this->upload->initialize($secondaryConfig);
                    if (!$this->upload->do_upload('image_1'))
                    {
                        $data['error_image_1'] = $this->upload->display_errors();
                        $this->template->build('admin/news/edit', $data);
                        return;
                    }
                    else
                    {
                        $image = $this->upload->data();
                        $images[] = $image['file_name'];

                        $this->image_lib->initialize($secondaryManipulationConfig);
                        $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name'];
                        if (!$this->image_lib->resize())
                        {
                            $data['error_image_1'] = $this->image_lib->display_errors();
                            $this->template->build('admin/news/edit', $data);
                            return;
                        }
                    }


                    $this->upload->initialize($secondaryConfig);

                    if (!$this->upload->do_upload('image_2'))
                    {
                        $data['error_image_2'] = $this->upload->display_errors();
                        $this->template->build('admin/news/edit', $data);
                        return;
                    }
                    else
                    {
                        $image = $this->upload->data();
                        $images[] = $image['file_name'];

                        $this->image_lib->initialize($secondaryManipulationConfig);
                        $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name'];
                        if (!$this->image_lib->resize())
                        {
                            $data['error_image_2'] = $this->image_lib->display_errors();
                            $this->template->build('admin/news/edit', $data);
                            return;
                        }
                    }

                    //image_3
                    $this->upload->initialize($secondaryConfig);
                    if (!$this->upload->do_upload('image_3'))
                    {
                        $data['error_image_3'] = $this->upload->display_errors();
                        $this->template->build('admin/news/edit', $data);
                        return;
                    }
                    else
                    {
                        $image = $this->upload->data();
                        $images[] = $image['file_name'];

                        $this->image_lib->initialize($secondaryManipulationConfig);
                        $secondaryManipulationConfig['source_image'] = './media/uploads/news/'.$image['file_name'];
                        if (!$this->image_lib->resize())
                        {
                            $data['error_image_3'] = $this->image_lib->display_errors();
                            $this->template->build('admin/news/edit', $data);
                            return;
                        }
                    }

【问题讨论】:

  • 我遇到了同样的问题。我通过上传全尺寸图片解决了这个问题,并在最终上传后调整大小(使用copymove_uploaded_file
  • 为什么要静态初始化每个文件的上传器?你不应该!使用this guide 并更正您的代码。

标签: php codeigniter image-uploading


【解决方案1】:

伙计,我不确定您是如何编写 HTML 的,但请尝试以下示例代码。您可以创建一个 test.php 文件来检查演示,然后您可以根据需要在代码中复制逻辑。

<?php
    if($_POST)
    {
        print "<pre>";print_r($_FILES);print "</pre>";
    }
?>
<form name="frm" method="post" enctype="multipart/form-data">
File1 : <input type="file" name="images[]" id="images[]"/> <br>
File2 : <input type="file" name="images[]" id="images[]"/> <br>
File3 : <input type="file" name="images[]" id="images[]"/> <br>
<input type="submit" name="Submit" />
</form>

输出会是这样的

Array
(
    [images] => Array
        (
            [name] => Array
                (
                    [0] => Chrysanthemum.jpg
                    [1] => Desert.jpg
                    [2] => Tulips.jpg
                )
            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                    [2] => image/jpeg
                )
            [tmp_name] => Array
                (
                    [0] => C:\wamp\tmp\phpE961.tmp
                    [1] => C:\wamp\tmp\phpE971.tmp
                    [2] => C:\wamp\tmp\phpE972.tmp
                )
            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                )
            [size] => Array
                (
                    [0] => 879394
                    [1] => 845941
                    [2] => 620888
                )
        )
)

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2013-07-31
    相关资源
    最近更新 更多