我没有上传图片并在数据库中保存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');
}
}
}
答案 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();