Php 上传文件时,我只得到数组中的第一个图像,我想要数组中的所有图像。使用Codeigniter
这里我附上欲望问题的代码。 Cotroller具有以下代码。 控制器=>Php 上传文件时,我只得到数组中的第一个图像,我想要数组中的所有图像。使用Codeigniter,php,file,codeigniter,Php,File,Codeigniter,这里我附上欲望问题的代码。 Cotroller具有以下代码。 控制器=> //Load upload library $this->load->library('upload'); $images = array(); $i = 0; foreach ($_FI
//Load upload library
$this->load->library('upload');
$images = array();
$i = 0;
foreach ($_FILES as $key => $value)
{
$tmp = explode(".",$value['name'][$i]);
$imagename = time().".".end($tmp);
$_FILES['file']['name'] = $imagename;
$_FILES['file']['type'] = $value['type'][$i];
$_FILES['file']['tmp_name'] = $value['tmp_name'][$i];
$_FILES['file']['error'] = $value['error'][$i];
$_FILES['file']['size'] = $value['size'][$i];
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['file_name'] = $imagename;
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('file'))
{
$error = array($i => $this->upload->display_errors());
echo "<pre>";print_r($error);die;
}
else
{
array_push($images,$this->upload->data()['file_name']);
}
$i++;
}
echo "<pre>";print_r($images);die;
//加载上载库
$this->load->library('upload');
$images=array();
$i=0;
foreach($\文件为$key=>$value)
{
$tmp=explode(“.”,$value['name'][$i]);
$imagename=time().“.”结束($tmp);
$\u文件['file']['name']=$imagename;
$\u文件['file']['type']=$value['type'][$i];
$\u FILES['file']['tmp_name']=$value['tmp_name'][$i];
$\u文件['file']['error']=$value['error'][$i];
$\u文件['file']['size']=$value['size'][$i];
$config['upload_path']='./uploads/';
$config['allowed_types']='gif | jpg | png';
$config['file_name']=$imagename;
$this->upload->initialize($config);
如果(!$this->upload->do_upload('file'))
{
$error=array($i=>$this->upload->display_errors());
echo”“;print_r($error);die;
<?php $attributes = array(
"class" => "form-horizontal m-t-20",
"method" => "post",
"novalidate" => "",
"enctype" => "multipart/form-data"
);
echo form_open('admin/user/adduser', $attributes); ?>
<label for="file">Profile Images*</label>
<input type="file" name="files[]" id="file" multiple required placeholder="Profile Images" class="form-control">
}
其他的
{
数组推送($images,$this->upload->data()['file\u name']);
}
$i++;
}
回声“;打印(图像);死亡
<?php $attributes = array(
"class" => "form-horizontal m-t-20",
"method" => "post",
"novalidate" => "",
"enctype" => "multipart/form-data"
);
echo form_open('admin/user/adduser', $attributes); ?>
<label for="file">Profile Images*</label>
<input type="file" name="files[]" id="file" multiple required placeholder="Profile Images" class="form-control">
这是我上传文件时使用的表单代码。
视图=>
这是我的文件输入控件
foreach($_FILES["files"]["tmp_name"] as $key=>$value) {
配置文件图像*
这是因为所有图像上的time()都是相同的,因此文件名不是唯一的。通过将数组键添加到文件名,可以很容易地解决此问题
$_FILES['file']['type'] = $_FILES["files"]['type'][$key];
这是因为所有图像上的time()都是相同的,因此文件名不是唯一的。通过将数组键添加到文件名,可以很容易地解决此问题
$_FILES['file']['type'] = $_FILES["files"]['type'][$key];
按如下方式更改代码
public function upload_multiple($field_name,$path){
$this->load->library('upload');
$files = $_FILES;
$cpt = count($_FILES[$field_name]['name']);//count for number of image files
$image_name =array();
for($i=0; $i<$cpt; $i++)
{
$_FILES[$field_name]['name']= $files[$field_name]['name'][$i];
$_FILES[$field_name]['type']= $files[$field_name]['type'][$i];
$_FILES[$field_name]['tmp_name'] = $files[$field_name]['tmp_name'][$i];
$_FILES[$field_name]['error']= $files[$field_name]['error'][$i];
$_FILES[$field_name]['size'] = $files[$field_name]['size'][$i];
$this->upload->initialize($this->set_upload_options($path));//for initalizing configuration for each image
$this->upload->do_upload($field_name);
$data = array('upload_data' => $this->upload->data());
$image_name[]=$data['upload_data']['file_name'];//store file name to store in database
}
return $image_name;//all images name which is uploaded
}
public function set_upload_options($path)
{
$config = array();
$config['upload_path'] = $path;
$config['allowed_types'] = 'gif|jpg|png';
$config['overwrite'] = FALSE;
return $config;
}
并将$i
更改为$key
,如下所示(适用于all)
正如wazabii所建议的,在文件名上附加了一些随机字符串。您可以使用兰德(10010000)更改代码,如下所示
public function upload_multiple($field_name,$path){
$this->load->library('upload');
$files = $_FILES;
$cpt = count($_FILES[$field_name]['name']);//count for number of image files
$image_name =array();
for($i=0; $i<$cpt; $i++)
{
$_FILES[$field_name]['name']= $files[$field_name]['name'][$i];
$_FILES[$field_name]['type']= $files[$field_name]['type'][$i];
$_FILES[$field_name]['tmp_name'] = $files[$field_name]['tmp_name'][$i];
$_FILES[$field_name]['error']= $files[$field_name]['error'][$i];
$_FILES[$field_name]['size'] = $files[$field_name]['size'][$i];
$this->upload->initialize($this->set_upload_options($path));//for initalizing configuration for each image
$this->upload->do_upload($field_name);
$data = array('upload_data' => $this->upload->data());
$image_name[]=$data['upload_data']['file_name'];//store file name to store in database
}
return $image_name;//all images name which is uploaded
}
public function set_upload_options($path)
{
$config = array();
$config['upload_path'] = $path;
$config['allowed_types'] = 'gif|jpg|png';
$config['overwrite'] = FALSE;
return $config;
}
并将$i
更改为$key
,如下所示(适用于all)
正如wazabii所建议的,在文件名上附加了一些随机字符串。您可以使用兰德(10010000)控制代码
<input type="file" id="portfolio_image" name="protfolio_image[]" >
输入字段
控制器代码
<input type="file" id="portfolio_image" name="protfolio_image[]" >
输入字段
没用,还是一样的问题。没用,还是一样的问题。那怎么办?这回答了你的问题吗?这回答了你的问题吗?那怎么办?这能回答你的问题吗?这回答了你的问题吗?看看,你确定吗?因为当我通过TMPY名字时,它只考虑循环中的tMPyNo..是的,它只考虑循环时的代码> tMPyNox。但是,为了获取数据,您应该使用$\u FILES[“FILES”]['type'][$key]
。试试打印(),你会看到的。看看。你确定吗?因为当我通过TMPY名字时,它只考虑循环中的tMPyNo..是的,它只考虑循环时的代码> tMPyNox。但是,为了获取数据,您应该使用$\u FILES[“FILES”]['type'][$key]
。尝试打印(),您将看到。