Cakephp создать папку загрузить изображение

я хочу автоматически создать папку на основе моего idEvenememt et загрузить много изображений в этой папке
My ImageevenementsController

    public function add($id) {

    if ($this->request->is('post')) {
        $this->Imageevenement->create();
      $this->request->data['Imageevenement']['idEvenement'] = $id;


      $data=$this->request->data;
       $dir = IMAGES.$id;
      if(!file_exists($dir))
        mkdir($dir,0777);

       $f = explode('.',$data['Imageevenement']['file']['name']);
    $ext = '.'.end($f);
    $filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-');
    //sauvgarder eb bdd
    $success = $this->Imageevenement->save(array(
    'name' => $data['Imageevenement']['name'],
    'url' => DS.$id.'/'.$filename.$ext
    ));
   if($success){

  move_uploaded_file($data['Imageevenement']['file']  ['tmp_name'],$dir.DS.$filename.$ext);

       }else{ 
   $this ->Session->setFlash("L'image n'est pas en bonne format");}     
    }
  if ($this->Imageevenement->save($this->request->data)) {
            $this->Flash->success(__('The image has been saved.'));
            return $this->redirect(array('action' => 'index' ,   'controller'=>'evenements'));
        } 
       }

по-моему

     <?php if (!empty($evenement['Imageevenement'])): ?>
              <table class="table table-bordered" >
                <tr><th> Nom</th>
                <th> Image</th>

                <th> Actions</th>
            </tr>
            <?php foreach ($evenement['Imageevenement']as $imageevenement): ?>
                <tr>

                    <td><?php echo $imageevenement['name']; ?></td>
                    <td><?php echo $imageevenement['url']; ?></td>

                    <td class="actions">
        <?php echo $this->Html->link(__('View'), array('action' => 'view', 'controller'=>'imageevenements', $imageevenement['idImageEvenement'])); ?>
        <?php echo $this->Html->link(__('Edit'), array('action' => 'edit', 'controller'=>'imageevenements',$imageevenement['idImageEvenement'])); ?>
        <?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete','controller'=>'imageevenements', $imageevenement['idImageEvenement']), array('confirm' => __('Are you sure you want to delete # %s?', $imageevenement['idImageEvenement']))); ?>
    </td>
                </tr>

папка создается с путем, начинающимся с such as

i want to create automatically a folder based on my idEvenememt et upload many images in this folder
my ImageevenementsController

    public function add($id) {

    if ($this->request->is('post')) {
        $this->Imageevenement->create();
      $this->request->data['Imageevenement']['idEvenement'] = $id;


      $data=$this->request->data;
       $dir = IMAGES.$id;
      if(!file_exists($dir))
        mkdir($dir,0777);

       $f = explode('.',$data['Imageevenement']['file']['name']);
    $ext = '.'.end($f);
    $filename = Inflector::slug(implode('.',array_slice($f,0,-1)),'-');
    //sauvgarder eb bdd
    $success = $this->Imageevenement->save(array(
    'name' => $data['Imageevenement']['name'],
    'url' => DS.$id.'/'.$filename.$ext
    ));
   if($success){

  move_uploaded_file($data['Imageevenement']['file']  ['tmp_name'],$dir.DS.$filename.$ext);

       }else{ 
   $this ->Session->setFlash("L'image n'est pas en bonne format");}     
    }
  if ($this->Imageevenement->save($this->request->data)) {
            $this->Flash->success(__('The image has been saved.'));
            return $this->redirect(array('action' => 'index' ,   'controller'=>'evenements'));
        } 
       }

in my View

     <?php if (!empty($evenement['Imageevenement'])): ?>
              <table class="table table-bordered" >
                <tr><th> Nom</th>
                <th> Image</th>

                <th> Actions</th>
            </tr>
            <?php foreach ($evenement['Imageevenement']as $imageevenement): ?>
                <tr>

                    <td><?php echo $imageevenement['name']; ?></td>
                    <td><?php echo $imageevenement['url']; ?></td>

                    <td class="actions">
        <?php echo $this->Html->link(__('View'), array('action' => 'view', 'controller'=>'imageevenements', $imageevenement['idImageEvenement'])); ?>
        <?php echo $this->Html->link(__('Edit'), array('action' => 'edit', 'controller'=>'imageevenements',$imageevenement['idImageEvenement'])); ?>
        <?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete','controller'=>'imageevenements', $imageevenement['idImageEvenement']), array('confirm' => __('Are you sure you want to delete # %s?', $imageevenement['idImageEvenement']))); ?>
    </td>
                </tr>

the folder is created with a path begin with such as 1/paris.png in the data base the images are created in the folder but i can’t show them . so how can i remove this ? why it show me nothing in the view ? what should i do to create the folder and upload imanges in it and show them in the view ?

/ paris.png в базе данных изображения создаются в папке, но я не могу их показать . так как я могу удалить это ? почему он не показывает мне ничего в виде ? что нужно сделать, чтобы создать папку, загрузить в нее imanges и показать их в представлении ?

1 ответ

  1. Как я понимаю plz попробовать это. Я создал отдельную функцию для создания папки, для изменения имени файла,для перемещения файла загрузки и т.д. Пожалуйста, проверьте, если есть какие-либо проблемы, то plz дайте мне знать.

    public function _create_folder($path) {
        $folderPath = $path ;
        if (!file_exists($folderPath.DS)) {
            App::uses('Folder', 'Utility');
            $dir = new Folder($folderPath , true, 0777);
        }
        return $folderPath. DS;
    }
    
    public function moveUploadedFile($filename , $destination) {
        if (move_uploaded_file($filename, $destination)) {
            return true;
        }
        return false;
    }
    
    public function change_file_name($fileName= null) {
    
        $exFileName     = strtolower(substr($fileName,strrpos($fileName,".") + 1));
        $sampleFileName = str_replace('.'.$exFileName,'', $fileName);
        $name           = Sanitize::paranoid($sampleFileName,array('_'));
        $fileRename     = $name.'.'.$exFileName;
        return $fileRename;
    }
    
    
    function add(){
    
        $file                           =     $data['Imageevenement']['file'];
        $file_name                      =     $file['name'];
        $tmp_name                       =     $file['tmp_name'];
        $return_file_name               =     $this->change_file_name($file_name);
        $path                           =     $this->_create_folder(IMAGES.DS.$id.DS);
        $return_file_name               =     $id.'/'.$return_file_name;
        if($this->moveUploadedFile($tmp_name, IMAGES.DS.$id.DS.$return_file_name)){
            $saveData['resume']         =   $return_file_name;
        }
    
        $success = $this->Imageevenement->save(array(
            'name' => $return_file_name,
            'url' => '/'.$id.'/'.$return_file_name
        ));
    
    }
    

    Для просмотра файла изображения в виде.ГЦП

    $imageName = $imageevenement['url'];
    echo $this->Html->image(IMAGES.$imageName);