codeigniter中的多个文件上传 [英] multiple file upload in codeigniter
问题描述
$ $ $ $ codeount = count($ _ FILES [ 'userfile的'] [ '尺寸']);
($ 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']
将会返回文件的大小bytes ...因为它是一个整数,所以 count
函数每次都会返回 1
。使用数组 $ _ FILES ['userfile'] ['tmp_name']
代替:
$ count = count($ _ FILES ['userfile'] ['tmp_name']);
然后覆盖 $ _ FILES
超全局。所以你必须使用一个局部变量来保存它:
$ b $ $ $ $ $ $ $ $ $ count $ count $(FILES ['userfile'] [ 'tmp_name的值']);
$ files = $ _FILES;
($ 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();
}
I am trying multiple file upload in Codeigniter.I uses following code for this
$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;
}
I am getting only first file in array uploaded..rest of files in array are not uploaded...is there anything wrong in this code...i cant figure it out...please help me.. Thanks in advance
I see two problems here. First :
$_FILES['userfile']['size']
will return the volume of the files in bytes... As it is an integer, the count
function will return 1
every time. Use the array $_FILES['userfile']['tmp_name']
instead :
$count = count($_FILES['userfile']['tmp_name']);
Then, you are overwriting the $_FILES
superglobal. So you will have to use a local variable to save it :
$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();
}
这篇关于codeigniter中的多个文件上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!