2016-12-21 6 views
2

私はすべての解決策を試しましたが、何が間違っているかはわかりません。 Codeigniterはファイルがアップロードされていないことを教えてくれます。私はプロジェクトのルートにフォルダを作成しました。私は他の同様の質問を見たことがありますが、私はそれが彼らのソリューションで動作するように管理することはできません。codeigniterのフォームにファイルをアップロード

これは私のコントローラである:

public function index() { 
     $this->form_validation->set_rules('name', 'name', 'required|trim|max_length[45]'); 
     $this->form_validation->set_rules('type_id', 'type', 'required|trim|max_length[11]'); 
     $this->form_validation->set_rules('stock', 'stock', 'required|trim|is_numeric|max_length[11]'); 
     $this->form_validation->set_rules('price', 'price', 'required|trim|is_numeric'); 
     $this->form_validation->set_rules('code', 'code', 'required|trim|max_length[45]'); 
     $this->form_validation->set_rules('description', 'description', 'required|trim|max_length[45]'); 
     $this->form_validation->set_rules('active', 'active', 'required|trim|max_length[45]'); 
     $this->form_validation->set_rules('unit_id', 'unit', 'required|trim|max_length[45]'); 
     $this->form_validation->set_rules('userfile', 'File', 'trim'); 

     $this->form_validation->set_error_delimiters('<br /><span class="error">', '</span>'); 

     if ($this->form_validation->run() == FALSE) { // validation hasn't been passed 
      $this->load->view('product/add_view'); 
     } else { // passed validation proceed to post success logic 
      // build array for the model 
      $form_data = array(
       'name' => set_value('name'), 
       'type_id' => set_value('type_id'), 
       'stock' => set_value('stock'), 
       'price' => set_value('price'), 
       'code' => set_value('code'), 
       'description' => set_value('description'), 
       'active' => set_value('active'), 
       'unit_id' => set_value('unit_id') 
      ); 

      $config = array(
       'upload_path' => "./uploads/", 
       'allowed_types' => "gif|jpg|png|jpeg", 
       'overwrite' => TRUE, 
       'max_size' => "2048000", // Can be set to particular file size , here it is 2 MB(2048 Kb) 
       'max_height' => "768", 
       'max_width' => "1024" 
      ); 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); //Make this line must be here. 
      $imagen = set_value('userfile'); 
      // run insert model to write data to db 

      if ($this->product_model->product_insert($form_data) == TRUE) { // the information has therefore been successfully saved in the db 
       if (!$this->upload->do_upload($imagen)) { 
        $error = array('error' => $this->upload->display_errors()); 
        $this->load->view('product/add_view', $error); 
       } else { 
        $data = array('upload_data' => $this->upload->data()); 
        $this->load->view('product/add_view', $data); 
       } 
      } else { 
       redirect('products/AddProduct', 'refresh'); 
       // Or whatever error handling is necessary 
      } 
     } 
} 

これが私の見解(ちょうど事項という部分を示す)

<?php // Change the css classes to suit your needs  

$attributes = array('class' => '', 'id' => ''); 
echo form_open_multipart('products/AddProduct', $attributes); ?> 

<p> 
    <label for="picture">Picture <span class="required">*</span></label> 
    <?php echo form_error('userfile'); ?> 
<?php echo form_upload('userfile')?> 
    <br/> 
</p> 

<p> 
     <?php echo form_submit('submit', 'Submit'); ?> 
</p> 

<?php echo form_close(); ?> 

EDITです:私は、エラー500を得る答えからの変更を適用します

+0

'localhostページが動作していない場合localhostは現在このリクエストを処理できません。 HTTP ERROR 500'の構文エラー – jned29

+0

ファンクションインデックス()の最後に3つの中括弧があります。 – jned29

+0

どのようなエラーがありますか?ルール? $ config配列? – ffuentes

答えて

0

私はあなたのコードを操作しようとしました。これは

$config = array(
    'upload_path' => "./uploads/", 
    'upload_url' => base_url()."uploads/", // base_url()."/uploads/", //added 
    'allowed_types' => "gif|jpg|png|jpeg", 
    'overwrite' => TRUE, 
    'max_size' => "2048000", // Can be set to particular file size , here it is 2 MB(2048 Kb) 
    'max_height' => "768", 
    'max_width' => "1024" 
); 

$this->load->library('upload'); //changed 
$this->upload->initialize($config); //Make this line must be here. 
$imagen = userfile; // $_FILES['userfile']['name'] //changed 

を変更した後、あなたがローカルホストページがローカルホストに動作していない取得する場合、それは私に働いたことは、現在、この要求を処理することができません。 HTTP ERROR 500の構文でエラーが発生する可能性があります。ちょうど}をコードの最後に追加します。 phpinfo()で他の情報を調べることができます。また、ファイルの場所に問題がある可能性があります。指定したアドレスか、サーバーでこれを実行している場合のアクセス許可です。

+0

私は、Windows 5.4でPHP 5.4.31を使ってテストしています。失敗するのはアップロードだけです。 – ffuentes

関連する問題