【问题标题】:Codeigniter file upload and resizeCodeigniter 文件上传和调整大小
【发布时间】:2024-04-19 06:45:03
【问题描述】:

我正在将个人资料图片上传到我的网站,第一次上传工作正常,但是当我尝试调整图片大小并将其重新上传到同一文件夹时,它会中断。通过测试,我知道它正在通过数组并将数据插入数据库,但只是没有重新保存到文件夹中。

这就是我要去的一个。

$config['upload_path'] = './uploads/';
$config['file_name'] = $this->user->pen_name.'.jpg';
$config['file_path'] = './uploads/'.$this->user->pen_name.'.jpg';
$config['max-size'] = 2000;
$config['overwrite'] = TRUE;
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['remove_spaces'] = true;
$config['max_width'] = 2000;
$config['max_height'] = 3000;
$this->load->library('upload', $config);

if ( ! $this->upload->do_upload()){

        $error = array('error' => $this->upload->display_errors());
}else{
    $resize['source_image'] = base_url().'/uploads/'.$config['file_name'];
    $resize['new_image'] = './uploads/';
    $resize['file_path'] = './uploads/'.$this->user->pen_name.'.jpg';
    $resize['create_thumb'] = false;
    $resize['maintain_ratio'] = true;
    $resize['width'] = 200;
    $resize['height'] = 300;
    $resize['overwrite'] = TRUE;
    $this->load->library('image_lib', $resize);
    $this->image_lib->resize();
    $this->load->library('upload', $resize);
    $this->users_model->uploadPic($resize['file_path']);
    redirect($_SERVER['HTTP_REFERER']);
}

任何帮助将不胜感激!

【问题讨论】:

    标签: codeigniter file-upload resize


    【解决方案1】:

    刚刚遇到同样的问题,解决方法如下:

    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    $config['max_size'] = '2048';
    $config['encrypt_name'] = TRUE;
    $this->load->library('upload', $config);
    
    if (!$this->upload->do_upload('logoUpload')) {
        $this->data['error'] = array('error' => $this->upload->display_errors('<div class="alert alert-danger">', '</div>'));
        //error
    } else {
    
        $upload_data = $this->upload->data();
    
        //resize:
    
        $config['image_library'] = 'gd2';
        $config['source_image'] = $upload_data['full_path'];
        $config['maintain_ratio'] = TRUE;
        $config['width']     = 150;
        $config['height']   = 50;
        $this->load->library('image_lib', $config); 
        $this->image_lib->resize();
    
        //add to the DB
        $this->settings_model->upload_logo($upload_data);
    }
    

    【讨论】:

      【解决方案2】:

      这些是来自 codeigniter 的默认配置,只需将 unlink 放在末尾即可:

      $config['image_library'] = 'gd2';
      $config['source_image'] = '/path/to/image/mypic.jpg';
      $config['create_thumb'] = TRUE;
      $config['maintain_ratio'] = TRUE;
      $config['width'] = 75;
      $config['height'] = 50;
      
      $this->load->library('image_lib', $config); 
      
      $this->image_lib->resize();
      
      //remove original file
      @unlink( $config['source_image'] );
      

      【讨论】:

      • 很抱歉,您可以从here 获取。并在 index.php 所在的核心文件夹中创建上传/缓存。用法:。 thumb.php 是控制器
      • 我想我在这里误解了一些东西。我不是在寻找拇指生成器,我只是想调整用户上传的图像的大小,因此如果他们上传的图像很大,它将被缩小,我不会托管或兑现更大的图像。
      • 这不起作用,那是我最初的代码基础。它不会上传调整大小的图像,只是上传原始图像。
      最近更新 更多