2012-02-15 145 views
0
//uploading product movie or image? 
     if($this->input->post('upload_360') == "Upload") { 
      $config['upload_path'] = './media/images/products/360s'; 
      $config['allowed_types'] = 'swf'; 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if (!$this->upload->do_upload('film')) { 
       $this->data['product_error'] = $this->upload->display_errors(); 
       $this->template->build('/admin/products/create', $this->data); 
      } else { 
       $this->data['data_360'] = $this->upload->data(); 
       $this->session->set_userdata(array('360_film' => $this->data['data_360'])); 
       $this->template->build('/admin/products/create', $this->data); 
      } 
      $this->session->set_userdata(array('advantages' => $this->input->post('product_advantages'))); 
      $this->data['session_advantages'] = $this->session->userdata('advantages'); 
     } 
     //upload the product image, if successful the user will be 
     //notified if the image is too high or wide, and will be offered, 
     //the chance to crop the image. All cropping takes place in the media 
     //controller. 
     if($this->input->post('product_image') == "Upload") { 
      $config['upload_path'] = './media/images/products/'; 
      $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if (!$this->upload->do_upload('image_upload')) { 
       //die("!"); 
       $this->data['image_error'] = $this->upload->display_errors(); 
       $this->template->build('/admin/products/create', $this->data); 
      } else { 
       $this->data['image_data'] = $this->upload->data(); 
       $this->session->set_userdata(array('image' => $this->data['image_data'])); 
       $this->data['session_image'] = $this->session->userdata('image'); 
       $this->template->build('/admin/products/create', $this->data); 
      } 
      $this->session->set_userdata(array('advantages' => $this->input->post('product_advantages'))); 
      $this->data['session_advantages'] = $this->session->userdata('advantages'); 
     } 

     if($this->input->post('screenshot_upload') == "Upload") { 
      $config['upload_path'] = './media/images/products/360s/screenshots/'; 
      $config['allowed_types'] = 'gif|jpg|jpeg|png'; 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if (!$this->upload->do_upload('screenshot')) { 
       //die("!"); 
       $this->data['screenshot_error'] = $this->upload->display_errors(); 
       $this->template->build('/admin/products/create', $this->data); 
      } else { 
       $this->data['screenshot_data'] = $this->upload->data(); 
       $this->session->set_userdata(array('screenshot' => $this->data['screenshot_data'])); 
       $this->data['session_screenshot'] = $this->session->userdata('screenshot'); 
       $this->template->build('/admin/products/create', $this->data); 
      } 
      $this->session->set_userdata(array('advantages' => $this->input->post('product_advantages'))); 
      $this->data['session_advantages'] = $this->session->userdata('advantages'); 
     } 

不设置在我的形式,我让用户选择一个文件,然后点击上传按钮取决于哪个按钮被点击被上传文件并上传的数据被保存在一个会话。数据会话笨

然后会话用于获取数据以保存到数据库,upload_360会话有效,product_image会话正常,但如果我使用if语句(代码中的第三个),screenshot_upload会话只有数据尝试并在代码之外访问它,那么会话的那部分是空的?

这是有原因吗?

+0

是否有错误?你使用什么类型的会话。 Codeigniters cookies,数据库,本机会话还是会话? – Henesnarfel 2012-02-15 13:26:14

+0

您正在使用哪种浏览器? – 2012-02-16 01:33:03

回答

0

为什么在将数据插入数据库之前将数据存储在会话中?

Cookies只能存储4KB的数据...

但与if语句(第一个代码),如果我尝试screenshot_upload会话只有数据和acccess它的代码之外,那么那部分会议是空的?

我不明白你的问题的一部分。你的意思是只有在使用第三条if声明时才有数据?即当只试图做screenshot_upload而不是product_image或360_upload`?如果是这样,那可能与Cookie大小限制有关。

而不是

$this->session->set_userdata(array('screenshot' => $this->data['screenshot_data'])); 
$this->data['session_screenshot'] = $this->session->userdata('screenshot'); 

你为什么不

$this->uploads_model->insert_screenshot_data($this->data['screenshot_data']);//send screenshot upload_data to model to be inserted into db 
$this->data['screenshot_data'] = $this->data['screenshot_data'];//if you want to pass screenshot upload_data to template/view 

0

看起来你正在设置会话之前发送输出给用户(我是从$这个 - >模板 - >打造推断这一点,这是自定义代码。)

会议,类似的报头,任何(ANYTHING)被发送到输出后都不能被修改。这是因为会话本身是在头部发送的。