Php codeigniter:如何从do_上传功能中获取错误或成功数据并在同一视图中显示
如果选择了一个图像,那么我想上传该图像并将文件名存储到db,否则我想在db文件名中存储为“default_brand.png”,并且不会上传任何文件。在下面的do_upload函数中,如果发生错误,则我希望在同一视图上显示该错误,如果没有错误且图像上载成功,则我希望显示成功消息。对于下面的代码,我必须做哪些更改Php codeigniter:如何从do_上传功能中获取错误或成功数据并在同一视图中显示,php,codeigniter,file-upload,image-uploading,Php,Codeigniter,File Upload,Image Uploading,如果选择了一个图像,那么我想上传该图像并将文件名存储到db,否则我想在db文件名中存储为“default_brand.png”,并且不会上传任何文件。在下面的do_upload函数中,如果发生错误,则我希望在同一视图上显示该错误,如果没有错误且图像上载成功,则我希望显示成功消息。对于下面的代码,我必须做哪些更改 function index() { //some statements. if (empty($_FILES['brand_image']['name'])) {
function index()
{
//some statements.
if (empty($_FILES['brand_image']['name'])) {
$filename = 'default_brand.png';
}
else {
$filename = $this->do_upload();
}
echo $filename;
}
function do_upload()
{
$config['upload_path'] = './assets/public_image/brand';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('brand_image'))
{
$error = array('error' => $this->upload->display_errors());
$this->load->model('get_data_model');
$resultset = $this->get_data_model->get_only_child_categories();
$data['resultset'] = $resultset;
$this->layouts->view('brand_view', array('left_sidebar' => 'sidebar/left_sidebar','right_sidebar' => 'sidebar/right_sidebar'),$data,true);
return "default_brand.png";
}
else
{
$data = array('upload_data' => $this->upload->data());
$filename = $data['file_name'];
return $filename;
}
}
我已经修改了您的原始代码以使用单个函数。它将在初始页面加载时加载索引页面,并且仅在用户实际向页面发布数据(上载文件)时才执行上载过程 我在视图中设置了相同的变量。您可以使用它们来显示成功消息或错误。(此代码还假设您有一个自定义的“布局”库,用于渲染视图,看起来就是这样。如果没有,则需要更改该行以使用codeigniter的默认视图渲染过程)
我现在正在整理。我有个问题。您正在使用自定义视图库吗?这就是你调用$this->layouts->view而不是$this->load->view的原因吗?是的。我已经为布局创建了一个库
function index(){
$post = $this->input->post();
$this->load->library('upload', $config);
$this->load->model('get_data_model');
if(!$post){ //your initial page load. user not submitting file since not posting data
$data = array(
'error' => FALSE,
'file_name' => '',
'resultset' => $this->get_data_model->get_only_child_categories()
);
$this->layouts->view('brand_view', array('left_sidebar' => 'sidebar/left_sidebar','right_sidebar' => 'sidebar/right_sidebar'),$data,true);
} else { //this is hit if user posting data (uploading file)
$config['upload_path'] = './assets/public_image/brand';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$data = array(
'error' => $this->upload->do_upload('brand_image') ? FALSE : $this->upload->display_errors('',''),
'file_name' => isset($upload_data['file_name']) ? $upload_data['file_name'] : 'default_brand.png',
'resultset' => $this->get_data_model->get_only_child_categories()
);
$this->layouts->view('brand_view', array('left_sidebar' => 'sidebar/left_sidebar','right_sidebar' => 'sidebar/right_sidebar'),$data,true);
}
}