2014-02-17 5 views
1

이미지 업로드가있는 곳에서는 다음 양식 및 컨트롤러를 사용할 수 있지만 파일이 특정 폴더에 업로드되지 않는 한 모든 것이 원활하게 진행됩니다.Codeigniter 파일이 업로드되지 않습니다.

보기

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

class Addproduct_controller extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form', 'url')); 
    } 

    public function index() 
    { 
     if (isset($_POST["btn_logout"])) { 

      $this->session->sess_destroy(); 
      $this->load->view('welcome_view'); 
     } else if (isset($_POST["btn_home"])) { 

      $this->load->view('welcome_view'); 

     } else if (isset($_POST["btn_account"])) { 


     } else if (isset($_POST["btn_add"])) { 

      $prod_img    = 'no image'; 
      $config['upload_path'] = 'Public/uploads/'; 
      $config['allowed_types'] = 'gif|jpg|png'; 
      $config['max_size']  = '1024'; 
      $config['max_width']  = '1024'; 
      $config['max_height'] = '768'; 
      $config['encrypt_name'] = TRUE; 



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


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

       // $error = array('error' => $this->upload->display_errors()); 

       //$this->load->view('upload_form', $error); 
       //return 'error'; 

      } else { 
       global $prod_img; 
       $data  = array(
        'upload_data' => $this->upload->data() 
       ); 
       $prod_img = $data->file_name; 
       // $this->load->view('upload_success', $data); 
      } 


      $prod_name = $_POST["txt_pname"]; 
      $prod_code = $_POST["txt_pcode"]; 
      $prod_price = $_POST["txt_pprice"]; 
      $prod_desc = $_POST["txt_pdesc"]; 
      $prod_options = $_POST["txt_poptions"]; 



      $this->load->model('product_model'); 
      $addproduct_result = $this->product_model->addProduct($prod_code, $prod_name, $prod_price, $prod_desc, $prod_img); 

      if ($addproduct_result == true) { 

       echo "Added Successfully"; 

      } else { 

       echo "Failed"; 
      } 

     } 

    } 





} 

가 그럼 난 정상 태그 대신 다음과 같은 추가하여 시도

<?php 
$this->load->helper('url'); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>diluks eCommerce cms - home page</title> 
<link href="<?php 
echo base_url(); 
?>Public/scripts/style.css" rel="stylesheet" type="text/css" /> 

</head> 

<body> 

<form action="<?php echo base_url();?>index.php/addproduct_controller" method="post"> 
<?php 
include 'header-adminpanel.php'; 
?> 
<div class="container"> 

    <div class="body-content"> 
     <div class="side-left"><?php 
include 'adminproduct_sidebar.php'; 
?></div> 
     <div class="side-right"> 
     <br /> 
     <table> 
      <tr> 
       <td class="captions">Product Code</td> 
       <td><input name="txt_pcode" type="text"/></td> 
      </tr> 
      <tr> 
       <td class="captions">Product Name</td> 
       <td><input name="txt_pname" type="text" size="40" /></td> 
      </tr> 
      <tr> 
       <td class="captions">Product Price</td> 
       <td><input name="txt_pprice" type="text" /></td> 
      </tr> 
      <tr> 
       <td class="captions">Product Description</td> 
       <td><textarea name="txt_pdesc" style="width:300px;height:100px;"></textarea></td> 
      </tr> 
      <tr> 
       <td class="captions">Product Image</td> 
       <td><input type="file" name="userfile" size="20" /></td> 
      </tr> 
      <tr> 
       <td class="captions">Product Options</td> 
       <td><input name="txt_poptions" size="40" type="text" /><a class="hint"> (Separate by a "," comma)</a></td> 
      </tr> 
      <tr><td><input name="btn_add" class="button" type="submit" value="Add" /></td></tr> 
     </table> 
     <br /> 
     </div> 
    </div> 

</div> 
<div style="clear:both"></div> 
<?php 
include 'footer.php'; 
?> 
</form> 
</body> 
</html> 

컨트롤러. 그것은 나에게 오류를 gaves

<?php 
$this->load->helper('form'); 
?> 


<?php 
echo form_open_multipart(base_url().'index.php/addproduct_controller'); 
?> 

A PHP Error was encountered 

Severity: Notice 

Message: Trying to get property of non-object 

Filename: controllers/addproduct_controller.php 

Line Number: 53 

이 좀 도와 아니면 내가 실수를했을 경우 저를 보여주십시오.

답변

1

enctype 태그가 없습니다.

또는 CI에서

이 코멘트에 폼 태그를 논의 사항에 따라

를 생성하는 form_open_multipart 기능을 사용하여 양식 태그에 enctype="multipart/form-data" 추가 아래 코드를 업데이트합니다.

$data  = array(
        'upload_data' => $this->upload->data() 
       ); 
$prod_img = $data["upload_data"]->file_name; 
+0

; ?>

+0

예. 어떤 오류가 있습니까? –

+0

예 "비 객체의 속성을 얻으려고 시도 중"이라고 말하면 –

0

당신은 파일을 업로드하는 형태의 속성을 포함하기 위해 밖으로 놓친

당신은 html 양식을 가지고 있지만 추가되지

0

양식 태그에 enctype = "다중/폼 데이터를"추가 양식 작성시 파일 업로드 태그.

양식 태그에 enctype="multipart/form-data"을 추가하십시오. 는 나에게 내가로드 -> 도우미 ('양식')처럼 추가 할 때 "비 개체의 속성을 얻으려고 노력"오류를 제공

<form action="<?php echo base_url();?>index.php/addproduct_controller" method="post" enctype="multipart/form-data" > 
관련 문제