[英]multiple file upload in codeigniter
我正在尝试在Codeigniter中上传多个文件,为此我使用了以下代码
$count = count($_FILES['userfile']['size']);
for($s=1; $s<=$count; $s++) {
$_FILES['userfile']['name']= $_FILES['userfile']['name'][$s];
$_FILES['userfile']['type']= $_FILES['userfile']['type'][$s];
$_FILES['userfile']['tmp_name']=$_FILES['userfile']['tmp_name'][$s];
$_FILES['userfile']['error']= $_FILES['userfile']['error'][$s];
$_FILES['userfile']['size']= $_FILES['userfile']['size'][$s];
$this->upload->initialize($this->set_upload_options());
$this->upload->do_upload();
}
private function set_upload_options(){
$config = array();
$config['upload_path'] = './images/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
return $config;
}
我只上传了数组中的第一个文件..数组中的其余文件未上传...此代码中有什么错误...我无法弄清楚...请帮助我..提前谢谢
我在这里看到两个问题。 首先:
$_FILES['userfile']['size']
将以字节为单位返回文件的容量...由于它是整数,因此count
函数每次都会返回1
。 使用数组$_FILES['userfile']['tmp_name']
代替:
$count = count($_FILES['userfile']['tmp_name']);
然后,您将覆盖$_FILES
超全局变量。 因此,您将必须使用局部变量来保存它:
$count = count($_FILES['userfile']['tmp_name']);
$files = $_FILES;
for($s=1; $s<=$count; $s++) {
$_FILES['userfile']['name']= $files['userfile']['name'][$s];
$_FILES['userfile']['type']= $files['userfile']['type'][$s];
$_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$s];
$_FILES['userfile']['error']= $files['userfile']['error'][$s];
$_FILES['userfile']['size']= $files['userfile']['size'][$s];
$this->upload->initialize($this->set_upload_options());
$this->upload->do_upload();
}
将此代码添加到您的controller内部方法中。
$ image_path = $ this-> input-> post('userfile');
$count = count($_FILES['userfile']['name']); //If file choosen to upload then ex
// print_r($_FILES); die();
$files = $_FILES['userfile']['name'];
$type = $_FILES['userfile']['type'];
$tmp_name = $_FILES['userfile']['tmp_name'];
$error = $_FILES['userfile']['error'];
$size = $_FILES['userfile']['size'];
//print_r($files); die();
// print_r($_FILES['userfile']['name']); die();
for ($i=0; $i <$count ; $i++)
# code...
{
//File Upload Configuration.
$config['upload_path'] = 'new/';
//echo $config['upload_path'].'<br>';
$config['allowed_types'] = 'gif|jpg|png|JPG|PNG|GIF';
$config['max_size'] = '3048';
$config['overwrite'] = false;
$config['remove_spaces'] = true;
$config['encrypt_name'] = TRUE;
$image_path_name = 'userfile';
$_FILES['userfile']['name']=$files[$i];
$_FILES['userfile']['type'] = $type[$i];
$_FILES['userfile']['tmp_name'] = $tmp_name[$i];
$_FILES['userfile']['error'] = $error[$i];
$_FILES['userfile']['size'] = $size[$i];
$this->load->library('upload', $config); //Load library
$this->upload->initialize($config);
if (!$this->upload->do_upload($image_path_name))
{
$this->session->set_flashdata('file','File not uploaded');
redirect('front/prop_sale');
}
else
{
// File uploaded successfully
$image_path[$i] = base_url().'new/'.$this->upload->file_name;
//print_r($image_path);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.