php – Codeigniter缩略图图像路径无法存储在MySql中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Codeigniter缩略图图像路径无法存储在MySql中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用CodeignITer创建一个简单的应用程序,我需要在 MySql数据库中存储缩略图图像路径.图像以及缩略图版本在上传文件夹中正确上传,我可以在上传时将图像路径存储在我的数据库中,但我无法将缩略图图像路径存储在数据库中.我在控制器中试过这个:

$thumbnail= $this->resize($data['upload_data']['full_path'],$data['upload_data']  ['file_name']);
$thumbnail_path = './uploads/'. $thumbnail;
$newRow = array(
                    "title" => $this->input->post('title'),"img_path" => $imgpath,"thumbnail_path" => $thumbnail_path,"post_body" => $this->input->post('post_body')
                    )

但它只在我的表格的thumbnail_path列中存储“./uploads/”,而不是实际的缩略图路径.我期望它存储类似“./uploads/Lighthouse_thumb.jpg”的东西.我无法弄清楚如何获取缩略图图像的路径以将它们存储在数据库中.这是我的完整上传控制器:
       

class Upload extends CI_Controller
  {

function __construct()
{
    parent::__construct();
    $this->load->helPEr('form');    
}
function index() {

        $this->load->view('upload_form',array('error'=>''));
    }

function do_upload() {
    $config['upload_path'] = './uploads/';
    $config['Allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '1000';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';

    $this->load->library('upload',$config);

    if (!$this->upload->do_upload()) {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('upload_form',$error);
    } else {
        $image_data = $this->upload->data();
        $imgpath = './uploads/' . $image_data['file_name'];
        $data = array('upload_data'=>$this->upload->data());
        $thumbnail= $this->resize($data['upload_data']['full_path'],$data['upload_data']['file_name']);
        $thumbnail_path = './uploads/'. $thumbnail;
        $newRow = array(
                    "title" => $this->input->post('title'),"post_body" => $this->input->post('post_body')
                    );
            $this->load->;model('postimage_path');
            $this->postimage_path->insert($newRow);
            $this->load->view('upload_success',$data);
    }

    }
function resize($path,$file) {
        $config['image_library'] = 'GD2';
        $config['source_image'] =  $path;
        $config['create_thumb'] = TRUE;
        $config['maintian_ratio'] = TRUE;
        $config['width'] = 100;
        $config['height'] = 100;
        $config['new_image'] = './uploads/' . $file;

        $this->load->library('image_lib',$config);
        $this->image_lib->resize();

    }

}

解决方法

$thumbnail_path = './uploads/'. $thumbnail;

所以thumbnail_path只包含“./uploads/”:告诉我们$thumbnail是false(或者是null或空字符串等),这意味着调用resize的返回值是错误的 – 似乎你希望它返回文件名.

function resize($path,$file) {
    $config['image_library'] = 'gd2';
    $config['source_image'] =  $path;
    $config['create_thumb'] = TRUE;
    $config['maintian_ratio'] = TRUE;
    $config['width'] = 100;
    $config['height'] = 100;
    $config['new_image'] = './uploads/' . $file;

    $this->load->library('image_lib',$config);
    $this->image_lib->resize();

}

resize什么都不返回!并且你没有为$thumbnail_path分配任何内容.那是你的问题.

你似乎只是复制了the CodeIgniter docs代码.来自所说的文件(强调我的):

所以你有它!如果您的文件名是$data [‘upload_data’] [‘file_name’],那么您的缩略图将是$data [‘upload_data’] [‘file_name’]. “_拇指”.看看你的文件系统,文件应该在那里供你查看.

所以要解决你的问题,这应该可以解决问题:

$pathinfo = pathinfo($data['upload_data']['file_name']);
 $thumbnail_path = './uploads/'. $data['upload_data']['file_name'] . "_thumb" . $pathinfo['extension'];

脚本宝典总结

以上是脚本宝典为你收集整理的php – Codeigniter缩略图图像路径无法存储在MySql中全部内容,希望文章能够帮你解决php – Codeigniter缩略图图像路径无法存储在MySql中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。