thinkPHP 3.2.3 多文件上传 数组变量转换的代码修改

先上代码:
<input type='file'  name='photo[]'>
<input type='file'  name='photo[]'>
<input type='file'  name='photo[]'>
如果是$upload->upload();直接上传,相当于$upload->upload($_FILES);

但是,当我传一个指定的input的name,
比如:$upload->upload($_FILES['photo']);就会出问题,
具体问题就是uploads里面的逐个文件检测时返回false,
经检查发现,检测没有错,而是在这之前的数组转换出错了。
先贴原来的代码:
private function dealFiles($files) {
    $fileArray  = array();
    $n          = 0;
    foreach ($files as $key=>$file){
        if(is_array($file['name'])) {
            $keys       =   array_keys($file);
            $count      =   count($file['name']);
            for ($i=0; $i<$count; $i++) {
                $fileArray[$n]['key'] = $key;
                foreach ($keys as $_key){
                    $fileArray[$n][$_key] = $file[$_key][$i];
                }
                $n++;
            }
        }else{
            $fileArray = $files;
            break;
        }
    }
    return $fileArray;
}
以上就是针对$_FILES的转换代码,如果要对$_FILES['photo']进行转换,这个代码就不能用了。
看下面我修改过的,
private function dealFiles($files) {
    $fileArray  = array();

    if(is_array($files['name'])){

        $count      =   count($files['name']);
        $keys       =   array_keys($files);

        for ($i=0; $i<$count; $i++) {

            foreach ($keys as $_key){
                $fileArray[$i][$_key] = $files[$_key][$i];
            }
        }

    }else{
        $fileArray = $files;
    }

   return $fileArray;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值