使用codeigniter

时间:2016-04-16 04:03:25

标签: php codeigniter

我没有上传图片并在数据库中保存image路径 我的表名是uploadimage,控制器名称是upload.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Upload extends CI_Controller {


    public function index()
    {
        $this->load->view('view');
    }
    public function do_upload()

    {
        $status="";
        $msg="";
        $filename='product_pic';
        if(empty($_POST['title']))
        {
            $status="error";
            $msg="plz enter title";
        }
        if($status!="error")
        {
            $config['upolad_path']='./file/';
             $config['allowed_types']='gip|jpg|png';
             $config['max_size']=1024*0;
             $config['encrypt_name']=true;
             $this->load->library('upload',$config);
             if(!$this->upload->do_upload($filename))
             {
                 $status='error';
                 $msg=$this->upload->display_errors('','');
             }
             else
             {
                 $this->load->model('file_model');
                 $data=$this->upload->data();
                 $file_id=$this->file_model->insert_file($data['file_name'],$_POST['title']);
                 if($file_id)
                 {
                     redirect('Upload/view');
                 } 
         }
    }

2 个答案:

答案 0 :(得分:2)

嗨,你需要这个

view.php

<?= form_open_multipart('upload/do_upload')?>
    <?= form_upload('userfile')?>
<?= form_close()?>

upload.php的

function do_upload(){
    $name = $_FILES["file"]["name"];
    $ext = end((explode(".", $name))); # extra () to prevent notice

    $config['upload_path']   = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = 0;

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

    if( ! $this->upload->do_upload()){
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('upload_form', $error);
    }
    else{
        $upload_data = $this->upload->data();

        #you can choose from
        /*
           Array(
                 [file_name]    => mypic.jpg
                 [file_type]    => image/jpeg
                 [file_path]    => /path/to/your/upload/
                 [full_path]    => /path/to/your/upload/jpg.jpg
                 [raw_name]     => mypic
                 [orig_name]    => mypic.jpg
                 [client_name]  => mypic.jpg
                 [file_ext]     => .jpg
                 [file_size]    => 22.2
                 [is_image]     => 1
                 [image_width]  => 800
                 [image_height] => 600
                 [image_type]   => jpeg
                 [image_size_str] => width="800" height="200"
          )
        */

        $this->model->insert_data($upoad_data['file_name'], $upoad_data['full_path']);

        $data = array('upload_data' => $this->upload->data());

        $this->load->view('upload_success', $data);
    }
}

model.php

function insert_data($name, $path_name){
    $data = array(
                  'name'    => $name,
                  'path'    => $path_name
                 );

    $this->db->insert('table', $data);

    return $this->db->insert_id();
}

然后,您上传文件,然后获取有关上传的数据并将其插入db

答案 1 :(得分:0)

我使用以下代码段在表单中上传带有多个文件上传字段的文件,将上传的文件保存到自定义目录,最后将文件位置路径保存到数据库

$input1 = $this->input->post('input1'); //Input field value
$input2 = $this->input->post('input2'); //Input field value
$photo1 = ''; //File field value
$photo2 = ''; //File field value

$config['upload_path'] = './photo_gallery/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size']    = '';
$this->load->library('upload', $config);

foreach($_FILES as $key=>$file) {
    //$key will be the field name
    $out_dir = "./photo_gallery/$key";
    if(!file_exists($out_dir)) {
        mkdir($out_dir, '0777', true);
    }
    if ( ! $this->upload->do_upload($key))
    {
        $error = array('error' => $this->upload->display_errors());
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
        $fileName = $data['upload_data']['file_name'];
        $newName = sha1_file("./photo_gallery/$fileName") . "." . pathinfo("./photo_gallery/$fileName", PATHINFO_EXTENSION);
        rename("./photo_gallery/$fileName", "$out_dir/$newName");
        $$key = "$out_dir/$newName";    //This will assign values for $photo1 and $photo2 with new paths
    }              
}

$data_to_insert = array(
    'input1' => $input1,
    'input2' => $input2,
    'photo1' => $photo1, //Updated with new file path
    'photo2' => $photo2, //Updated with new file path
);

//pass variable $data_to_insert in model function that implements following
$success = $this->db->insert('my_table', $data_to_insert);
return $this->db->insert_id();