1

我正在codeigniter(PyroCMS)中开发一个电子纸模块。
我想知道如何一次上传多张图片。

谁能指导我上传多张图片?

我试过了,但我只找到了用于上传我已经在新闻模块中使用的单个图像的代码。

4

2 回答 2

2

视图文件中给出此图像上传代码:

echo form_label('Multi Images','',$label_attr);
echo form_upload($multi_photo_attr);

在哪里

$multi_photo_attr   =   array(
            'id'        =>  "cat_multi_images",
            'class'     =>  "multi",
            'name'      =>  "cat_multi_images[]",
            'maxlength' =>  "25",
            'multiple'  =>  "multiple"                      
    );

现在您需要在将上传照片的根目录中创建一个文件夹。

之后,在控制器的方法中,您需要将该文件夹的路径存储在一个变量中。该变量将用于上传文件夹中的图像。

接下来,获取数组中所有图像的名称,如下所示:

foreach($_FILES["cat_multi_images"] as $key => $value)
{
$i=0;
foreach($value as $key1 => $value1)
{
$multi_photo_array[$i][$key]    =   $value1;
$i++;
}

之后,对于每个数组元素,即对于每个图像,运行下面的代码来上传它:

function UploadFile($files,$path)
{   

    $extensions         =   array('jpeg','JPEG','gif','GIF','png','PNG','jpg','JPG','pdf','PDF','ZIP','zip','rar','RAR','html','HTML','TXT','txt','doc','docx','DOC','DOCX','ppt','PPT','pptx','PPTX','xlsx','XLSX','xls','XLS','exe','EXE','mp3','MP3','wav','WAV','m4r','M4R','mpeg','MPEG','mpg','MPG','mpe','MPE','mov','MOV','avi','AVI',);


    $destination        =   $path.$files["name"];
    //print_r($destination);exit;
    // GET FILE PARTS
    $fileParts          =   pathinfo($files['name']);
    $file_name          =   $files['name'];
    $file_name_only     =   $fileParts['filename'];
    $file_name_only     =   preg_replace('/[^a-zA-Z0-9]/','',$file_name_only);
    $file_extention     =   $fileParts['extension'];
    $Count              =   0;

    $destination        =   $path.$file_name_only.".$file_extention";
    $file_name          =   $file_name_only.".$file_extention";;

    // THIS SHOULD KEEP CHECKING UNTIL THE FILE DOESN'T EXISTS
    while( file_exists($destination))
    {
      $Count += 1;
      $destination  =  $path. $file_name_only."-".$Count.".$file_extention";
      $file_name    =  $file_name_only."-".$Count.".$file_extention";
    }

    $fileextension='';
    $filename='';
    if(!empty($files))
    {
        $filename=$files['name'];

        $fileextension=substr($filename,strpos($filename,".")+1);

        if(in_array($fileextension,$extensions))
        {

            $uploadstatus=move_uploaded_file($files["tmp_name"],$destination);
            if($uploadstatus)
            {
                return $file_name;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }   
    }       
}

只需复制上面的代码。它应该可以正常工作,因为它是我为一般情况制作的!您可以将该代码复制到模型文件中并在控制器中调用它,如下所示:

 $pr_photo_data = $this->admin_model->UploadFile($value,$targetPath_images);
$photo_list[]           =   $pr_photo_data;

然后将每张图片存入数据库

foreach($photo_list as $image)
{
$pro_image["cat_multi_images"]  =   $image;
$pro_retId =    $this->admin_model->add_multipic_cat($pro_image);
}

在哪里

function add_multipic_cat($data) 
    {
        $retId = $this->database->query_insert("photo", $data);
        return $retId;
    }

小心谨慎,每一步都做的准确

于 2013-09-02T13:07:42.107 回答