request->file不支持多文件上传,存在覆盖问题

dangpengsong

问题描述

request->file('image')上传多个图片只能获取到一个,不支持多文件

程序代码或配置

文件路径:vendor/workerman/workerman/Protocols/Http/Request.php

if ($files_encode_string) {
        parse_str($files_encode_string, $this->_data['files']);
        \array_walk_recursive($this->_data['files'], function (&$value) use ($files) {
            $value = $files[$value];
        });
    }

parse_str在解析类似name=eeeeeeeeee&content=ffffffffff&image=0&image=1的时候image是两张图片存在覆盖问题,下面是我的修复代码,该问题消失,但是返回的对象是数组,不确定这是不是为了简化数据结构方便使用,这样设计的,所以发帖询问

if ($files_encode_string) {
    foreach (explode('&', $files_encode_string) as $item) {
        if ($item === '') {
            continue;
        }
        list($name, $index)            = explode('=', $item);
        $this->_data['files'][$name][] = $index;
    }
    \array_walk($this->_data['files'], function (&$value) use ($files) {
        $_value = [];
        foreach ($value as $name => $index) {
            $_value[$name] = $files[$index];
        }
        $value = $_value;
    });
}

重现问题的步骤

405 2 0
2个回答

nitron

换成"image[]"

  • dangpengsong 2023-04-21

    卧槽,撸代码脑子都木了,舍近求远,犯下不可饶恕的罪孽,今天不宜再写代码了

  • tanhongbin 2023-04-23

    这是真的,每天敲代码时间久了,后面大脑自己就偷懒了,生理问题,很难搞

dangpengsong

标记问题失效,可能得吃脑白金了

  • 暂无评论
年代过于久远,无法发表回答
🔝