【问题标题】:Cakephp Create Folder Upload imageCakephp 创建文件夹 上传图片
【发布时间】:2016-08-30 17:16:54
【问题描述】:

我想根据我的 idEvenememt 自动创建一个文件夹,并在此文件夹中上传许多图像 我的 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>

文件夹的创建路径以 \ 开头,例如数据库中的 \1/paris.png 图像是在文件夹中创建的,但我无法显示它们。那么我怎样才能删除这个\?为什么它在视图中什么也没显示?我应该怎么做才能创建文件夹并在其中上传图像并在视图中显示它们?

【问题讨论】:

    标签: php image upload cakephp-2.0 directory


    【解决方案1】:

    据我了解,请试试这个。我已经为创建文件夹、更改文件名、移动上传文件等创建了单独的函数。请检查是否有任何问题,然后请告诉我。

    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
        ));
    
    }
    

    查看view.ctp中的图片文件

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2012-05-01
      • 2017-10-05
      • 1970-01-01
      相关资源
      最近更新 更多