CI 同时上传多个图片
最近,一直在研究ci框架,由于项目的需求,在后台需要做一个功能同时上传两张图片。测试了好久都没有两张图片都没有上传成功,(上传的结果是只能上传第二张图片,但是图片名称是第一个图片的)。在这里说一下自己的思路,首先肯定是上传两张图片,然后提交到php页面,然后打印$_FILES你会看到一个二维数组,我这里是通过foreach循环来操作:
$this->load->library('upload');//重点
foreach($_FILES as $key=>$val)
{
$filename = $_FILES[$key]['name'];
$tmp = explode('.', $filename);
$ext = $tmp;//获取文件后缀
/*组合$config*/
$this->upload->initialize($config);// 重点
$this->upload->do_upload($key);
//$info[$key] = $config['file_name'];
}
上边的代码比较简单,在我标明重点的两端代码,大家一定要注意。原来我的代码是在foreach中添加$this->load->library('upload',$config);这样测试了好多次都不行,最后改用 $this->load->library('upload');//重点 $this->upload->initialize($config);// 重点。问题就解决了。 这里是control中的代码{:1_1:}{:1_1:}{:1_1:}
//处理文件上传数据
public functiondo_upload(){
//重新组合一个$_FILES中的格式 使其变为和上传单个文件的数据格式类似
foreach($_FILES['myfile'] as $index => $vals){
foreach ($vals as $i => $val) {
$file_map[$i]['myfile'][$index] = $val;
}
}
foreach ($file_map as $files) {
$config['upload_path'] = './uploads/admin/test';
$config['file_name'] = uniqid();
$config['allowed_types'] = 'gif|jpg';
//遍历 这样每次都去覆盖掉$_FILES中的数据 (PS:这样覆盖后,$_FILES格式就和上传单个文件的格式是一模一样的了)
$_FILES = $files;
$this->load->library('upload',$config);
$this->upload->do_upload("myfile");
echo $this->upload->display_errors();
var_dump($this->upload->data());
}
}
foreach($_FILES as $key=>$val)
{
$filename = $val['name'];
}
echo "<pre>";
var_dump($filename);
echo "</pre>";
die;
打印结果string(7) "789.jpg",上传两张只有一个图片的名字,是我哪里写错了吗, {:1_1:}谢谢分享 mark! mark! 谢谢分享 {:soso_e179:} 学习一下 非常感谢 好好:victory: 本帖最后由 the7th 于 2015-3-18 11:42 编辑
好像是我写错了 不过还是没结果
页:
[1]
2