如何在 codeigniter 中上传 2 个单独的图像
How to upload 2 separate images in codeigniter
我想分别上传2张图片。我有一种情况,我需要上传文件,有时需要上传图像,有时只需要图像,我需要使用单独的按钮来区分图像和文件。
我的代码是
<form action="http://localhost/cod_login/club/test2" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile" size="20">
<input type="file" name="userfile" size="20">
<input type="submit" name="submit" value="upload">
</form>
这是控制器
function ddoo_upload(){
$config['upload_path'] = './uploads/';
$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()) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
} else {
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
<form action="http://localhost/cod_login/club/test2" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile" size="20" multiple="">
<input type="submit" name="submit" value="upload">
</form>
如果你想要2个不同的文件按钮,你需要给他们不同的名字。
<form action="" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile1" size="20">
<input type="file" name="userfile2" size="20">
<input type="submit" name="submit" value="upload">
你必须像下面那样修改你的函数 ddoo_upload()
:-
function ddoo_upload($filename){
$config['upload_path'] = './uploads/';
$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($filename)) {
$error = array('error' => $this->upload->display_errors());
return false;
// $this->load->view('upload_form', $error);
} else {
$data = array('upload_data' => $this->upload->data());
return true;
//$this->load->view('upload_success', $data);
}
}
注意:- 我们将 $filename
作为变量传递,而不是使用它来上传不同的文件。
现在在表单操作重定向的控制器中,您需要编写以下代码。
if ($this->input->post('submit')){
if (isset($_FILES['userfile1']) && $_FILES['userfile1']['name'] != ''){
$file1 = $this->ddoo_upload('userfile1');
}
if (isset($_FILES['userfile2']) && $_FILES['userfile2']['name'] != ''){
$file2 = $this->ddoo_upload('userfile2');
}
}
这是我在codeigniter中申请上传两张图片的控制器代码
public 函数索引()
{
if($this->input->post('Submit')){
//-----------Image File Section Start Here -----------//
$config['upload_path'] = './uploads/'; // Directory
$config['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config['max_size'] = '30720'; //Max Size
$config['encrypt_name'] = TRUE; // For unique image name at a time
$this->load->library('upload', $config); //File Uploading library
$this->upload->do_upload('userfile'); // input name which have to upload
$video_upload=$this->upload->data(); //variable which store the path
//--------------End of Image File Section------------------------//
//---------Thumbnail Image Upload Section Start Here -----------//
$config2['upload_path'] = './thumb/'; // Directory
$config2['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config2['max_size'] = '30720'; //Max Size
$config2['encrypt_name'] = TRUE; // For unique image name at a time
$this->upload->initialize($config2); //we can not use upload library again and again it will not initialize again and again so thats why i have used initialize
$this->upload->do_upload('txt_thumb'); // File Name
$thumbnail_upload=$this->upload->data(); // store the name of the file
//--------End of Thumbnail Upload Section-----------//
$date=date("d-m-Y"); // Store current date in variable
// Here the database query to insert
$data = array(
'parent_id'=> $this->input->post('txt_parent'),
'cat_id' => $this->input->post('txt_category'),
'title'=> $this->input->post('txt_title'),
'status' => $this->input->post('txt_status'),
'featured' => $thumbnail_upload['file_name'],
'image' => $video_upload['file_name'],
'time'=>$date
);
$sql_ins= $this->Insimage->insertimage($data);
if($sql_ins)
{
$data['Success'] = "Image has been succesfully inserted!!";
}
}
此代码肯定可以上传 2 张图片
享受!!!! :-)
1- 在您的控制器中创建 image_uploader
function image_uploader($filename){
$config['upload_path'] = './assets/uploads/setting/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '2000';
$config['max_height'] = '2000';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload($filename)) {
$error = array('error' => $this->upload->display_errors());
} else {
$data_foto = $this->upload->data();
return $data_foto['file_name'];
}
此函数return图片文件名,如果上传成功
2- 在其他函数中调用 image_uploader(在视图中形成动作)
public function slideroneupload() {
$this->site_security->_make_sure_is_admin();
$data = $this->input->post();
$sliderimage = $this->image_uploader('image');
$thumbimage = $this->image_uploader('thumb');
// save all data to database
.
.
.
}
我想分别上传2张图片。我有一种情况,我需要上传文件,有时需要上传图像,有时只需要图像,我需要使用单独的按钮来区分图像和文件。
我的代码是
<form action="http://localhost/cod_login/club/test2" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile" size="20">
<input type="file" name="userfile" size="20">
<input type="submit" name="submit" value="upload">
</form>
这是控制器
function ddoo_upload(){
$config['upload_path'] = './uploads/';
$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()) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
} else {
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
<form action="http://localhost/cod_login/club/test2" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile" size="20" multiple="">
<input type="submit" name="submit" value="upload">
</form>
如果你想要2个不同的文件按钮,你需要给他们不同的名字。
<form action="" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="userfile1" size="20">
<input type="file" name="userfile2" size="20">
<input type="submit" name="submit" value="upload">
你必须像下面那样修改你的函数 ddoo_upload()
:-
function ddoo_upload($filename){
$config['upload_path'] = './uploads/';
$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($filename)) {
$error = array('error' => $this->upload->display_errors());
return false;
// $this->load->view('upload_form', $error);
} else {
$data = array('upload_data' => $this->upload->data());
return true;
//$this->load->view('upload_success', $data);
}
}
注意:- 我们将 $filename
作为变量传递,而不是使用它来上传不同的文件。
现在在表单操作重定向的控制器中,您需要编写以下代码。
if ($this->input->post('submit')){
if (isset($_FILES['userfile1']) && $_FILES['userfile1']['name'] != ''){
$file1 = $this->ddoo_upload('userfile1');
}
if (isset($_FILES['userfile2']) && $_FILES['userfile2']['name'] != ''){
$file2 = $this->ddoo_upload('userfile2');
}
}
这是我在codeigniter中申请上传两张图片的控制器代码
public 函数索引() {
if($this->input->post('Submit')){
//-----------Image File Section Start Here -----------//
$config['upload_path'] = './uploads/'; // Directory
$config['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config['max_size'] = '30720'; //Max Size
$config['encrypt_name'] = TRUE; // For unique image name at a time
$this->load->library('upload', $config); //File Uploading library
$this->upload->do_upload('userfile'); // input name which have to upload
$video_upload=$this->upload->data(); //variable which store the path
//--------------End of Image File Section------------------------//
//---------Thumbnail Image Upload Section Start Here -----------//
$config2['upload_path'] = './thumb/'; // Directory
$config2['allowed_types'] = 'jpg|jpeg|bmp|png'; //type of images allowed
$config2['max_size'] = '30720'; //Max Size
$config2['encrypt_name'] = TRUE; // For unique image name at a time
$this->upload->initialize($config2); //we can not use upload library again and again it will not initialize again and again so thats why i have used initialize
$this->upload->do_upload('txt_thumb'); // File Name
$thumbnail_upload=$this->upload->data(); // store the name of the file
//--------End of Thumbnail Upload Section-----------//
$date=date("d-m-Y"); // Store current date in variable
// Here the database query to insert
$data = array(
'parent_id'=> $this->input->post('txt_parent'),
'cat_id' => $this->input->post('txt_category'),
'title'=> $this->input->post('txt_title'),
'status' => $this->input->post('txt_status'),
'featured' => $thumbnail_upload['file_name'],
'image' => $video_upload['file_name'],
'time'=>$date
);
$sql_ins= $this->Insimage->insertimage($data);
if($sql_ins)
{
$data['Success'] = "Image has been succesfully inserted!!";
}
}
此代码肯定可以上传 2 张图片 享受!!!! :-)
1- 在您的控制器中创建 image_uploader
function image_uploader($filename){
$config['upload_path'] = './assets/uploads/setting/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '2000';
$config['max_height'] = '2000';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload($filename)) {
$error = array('error' => $this->upload->display_errors());
} else {
$data_foto = $this->upload->data();
return $data_foto['file_name'];
}
此函数return图片文件名,如果上传成功
2- 在其他函数中调用 image_uploader(在视图中形成动作)
public function slideroneupload() {
$this->site_security->_make_sure_is_admin();
$data = $this->input->post();
$sliderimage = $this->image_uploader('image');
$thumbimage = $this->image_uploader('thumb');
// save all data to database
.
.
.
}