首页 > 解决方案 > 无法合并请求输入文件 laravel

问题描述

我希望在验证通过时将 laravel 请求合并为新值,但我无法合并或替换输入文件的输入键值我需要将输入键值更改为生成的唯一值filename并将其存储在存储中

这是我的代码:

public function store(Request $request)
{
    if ($request->hasFile('photo')) {
        $photo = $request->file('photo');

        $filename = sha1(uniqid()) . '.' . $photo->getClientOriginalExtension();

        Storage::disk('photo')->put($filename, $photo->get());

        $request->merge([
            'photo' => $filename,
        ]);
    }

    return $request->all();
}

预期结果:

[
    'id'    => '60028942359046444097',
    'name'  => 'Mio Akiyama',
    'photo' => '0c7b34056cb58e812376b84279605129b22646c7.jpg',
]

实际结果:

[
    'id'    => '60028942359046444097',
    'name'  => 'Mio Akiyama',
    'photo' => [

    ],
]

标签: laravelmergerequest

解决方案


首先将请求数组分配给一个变量。

$array = $request->all();

然后,您可以操作该数组变量的数据。

$array['photo'] = $filename;

return $array;

推荐阅读