我在Google上尝试了几乎所有的论坛,但无法找到解决方案 对于这个问题,我有一个产品上传表格,有两个上传 图像选项,但我似乎无法上传任何图像 数据库,我都无法使上传路径方法正常工作。帮我 出来请。将图像上传到db的最佳方法是什么?
**Controller File**
<?php
class Admin extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model('admin_model');
}
public function index(){
$data['cats'] = $this->admin_model->get_cats();
$data['brands'] = $this->admin_model->get_brands();
$this->load->view('admin_view', $data, $data);
$data['upload_data'] = $this->upload->data();
$image = base_url("uploads/". $data['raw_name'] . $data['file_ext']);
$_POST['product_img1'] = $image;
//$image_url = $this->upload->data('full_path');
$product = array(
'product_name' => $this->input->post('name'),
'brand_id' => $this->input->post('brands'),
'cat_id' => $this->input->post('catagories'),
'product_price' => $this->input->post('price'),
'product_desc' => $this->input->post('desc'),
'product_img1' => $this->input->post('img')
);
//$insert_id = $this->admin_model->form_insert($product);
/**
$config = array(
'upload_path' => "./images/",
'allowed_types' => "gif|jpg|png|jpeg",
'overwrite' => true
);
$this->load->library('upload', $config);
$data = $this->upload->data();
$image = base_url("./uploads/". $data['raw_name'] . $data['file_ext']);
$_POST['image'] = $image;
$this->load->model('admin_model');
**/
//if (!empty($_POST)) {
// Loading model
//$this->upload->do_upload();
//$data = array('product_img1' => $this->upload->data());
//$file_data = $this->upload->data();
//$data['product_img1'] = base_url().'/uploads/'.$file_data['file_name'];
//$product_img1 = $_FILES['product_img1']['name'];
//$product_img2 = $_FILES['product_img2']['name'];
//$temp_name1 = $_FILES['product_img1']['tmp_name'];
//$temp_name2 = $_FILES['product_img2']['tmp_name'];
//m_checkstatus(conn, identifier)ove_uploaded_file($temp_name1, "uploads/$product_img1");
//move_uploaded_file($temp_name2, "uploads/$product_img2");
//$this->admin_model->insert($data);
// Calling model
//$id = $this->admin_model->form_insert($data);
//}
}
}
?>
**Model File**
<?php
class admin_model extends CI_Model{
function __construct() {
parent::__construct();
}
function form_insert($product){
// Inserting in Table(students) of Database(college)
$insert = $this->db->insert('products', $product);
return $insert;
}
function get_cats(){
$this->db->select("*");
$this->db->from("catagories");
$query = $this->db->get();
return $query->result_array();
}
function get_brands(){
$this->db->select("*");
$this->db->from("brands");
$query = $this->db->get();
return $query->result_array();
}
}
?>
答案 0 :(得分:0)
此问题已经回答here
模型中的$ this-&gt; input-&gt; post('img')无法检索图像信息。因为图像存储在$ _FILES中而不是$ _POST中。因此,您需要在codeignitor中使用上传库,如下所示。
另外,请确保您的表单包含enctype =“multipart / form-data”attr,并且数据库中的列类型为 blob 。
答案 1 :(得分:0)
我会举个例子。这是控制器部分。
public function add()
{
if (empty($_FILES['image']['name']))
{$this->session->set_flashdata('yes', 'Please Upload an image');
redirect($_SERVER['HTTP_REFERER']);
}
else
{
$target_dir = "images/products/";
$target_file = $target_dir . time().basename($_FILES["image"]["name"]);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$imgName = time().basename($_FILES["image"]["name"]);
move_uploaded_file($_FILES["image"]["tmp_name"],$target_file);
$this->adminmodel->addproducts($imgName);
}
}
模型部分
public function addproducts($imgName)
{
$data = array(
'name' => $this->input->post('name'),
'category' => $this->input->post('category'),
'image' => $imgName
);
$this->db->insert('products', $data);
$this->session->set_flashdata('yes', 'Product added successfully');
redirect('admin/products/productlist');
}
查看部分(表格)
form role =&#34; form&#34;行动=&#34;管理/产品/添加&#34;方法=&#34;后&#34; ENCTYPE =&#34;多部分/格式数据&#34; ID =&#34;接触型&#34;&GT;
您的表单应包含enctype =&#34; multipart / form-data&#34;