如何在php上传多个图像

时间:2013-09-02 12:38:49

标签: codeigniter pyrocms

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

有人可以指导我上传多张图片吗?

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

2 个答案:

答案 0 :(得分: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;
    }

小心。小心谨慎,准确地完成每一步

答案 1 :(得分:0)