简体   繁体   English

Codeigniter 4 多图上传问题

[英]Codeigniter 4 Multiple Image Upload Issue

When I update the database, it uploads a single image.当我更新数据库时,它会上传一张图片。 How do I upload multiple?如何上传多个?


        $id = $this->request->getPost('id');
        
        $model = new UrunModel();
        $file = $this->request->getFile('resim');
        $resim_eski = $model->find($id);
        
        if($file->isValid() && !$file->hasMoved()){
        
        $eski_resim = $resim_eski['resim'];
        if(file_exists("dosyalar/uploads".$eski_resim)){
              unlink("dosyalar/uploads".$eski_resim);
        } 
        $imagename = $file->getRandomName();
        $file->move("dosyalar/uploads", $imagename);
        
        }else{
             $imagename = $resim_eski['resim'];
        }
        
        if ($this->request->getFileMultiple('images')) {
 
             foreach($this->request->getFileMultiple('images') as $res)
             {   
 
                $res->move(WRITEPATH . 'dosyalar/uploads');
             
        $data=[
        'baslik'          => $this->request->getPost('baslik'),
        'slug'            => mb_url_title($this->request->getPost('baslik'), '-', TRUE),
        'kisa_aciklama'   => $this->request->getPost('kisa_aciklama'),
        'kategori'        => $this->request->getPost('kategori'),
        'query_kategori'  => $this->request->getPost('query_kategori'),
        'aciklama'        => $this->request->getPost('aciklama'),
        'fiyat'           => $this->request->getPost('fiyat'),
        'indirimli_fiyat' => $this->request->getPost('indirimli_fiyat'),
        'resim'        => $imagename, 
        'resimler' =>  $res->getClientName(),
                'type'  => $res->getClientMimeType()
        ];
        
        
        $model -> update($id,$data);
        
        } 
        
        } 
        return redirect()->to(base_url('yonetim/urunler'));
        }


Controller code above, I've been struggling for 2 days, I couldn't manage it somehow. Controller上面的代码,我已经苦苦挣扎了2天,我怎么也搞不定。 When I run the code, it just adds 1 image to each product.当我运行代码时,它只向每个产品添加 1 张图像。 I want to add more than one image to 1 product for the gallery part.我想为图库部分的 1 个产品添加多张图片。 Any suggestions for this code or a different solution?对此代码或其他解决方案有任何建议吗?

        function add()
      {
        $length = count($_FILES['image']['name']);
        $filename = $_FILES['image']['name'];
        $tempname = $_FILES['image']['tmp_name'];

        $allimage = array();
        foreach($filename as $key =>$value)
        {
            move_uploaded_file($tempname[$key],'media/uploads/mobile_product/'.$filename[$key]);
            $allimage[] = $filename[$key];
        }
        if(!empty($allimage))
        {
            $allimage = json_encode($allimage);
        }
        else
        {
            $allimage = '';
        }

        $data['image'] = $allimage;
        $this->db->insert('table',$data);  

        }
CI4 Controller: 

  if($this->request->getFileMultiple('image_files')) {
        $files = $this->request->getFileMultiple('image_files');
            foreach ($files as $file) {
                if ($file->isValid() && ! $file->hasMoved())
                {
                    $newNames = $file->getRandomName();
                    $imageFiles = array(
                        'filename' => $newNames
                    );
                    $modelName->insert($imageFiles );
                    $file->move('uploads/', $newNames);
                }
            }
         }
HTML
<input type="file" name="image_files[]">

This is the shortest way to do that这是做到这一点的最短方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM