合并请求不起作用

搅拌

我正在尝试使用图像文件名替换“ pic”值(当它进入时设置为数组),但是合并似乎无法正常工作。

使用以下代码在日志中没有出现任何错误。我想我还不能嵌入图片,因此下面有链接。我正在做一个Laravel项目。

Log::info($request);

$image = $request->file('pic');
$imageName = $image->getClientOriginalName();

$request->merge(array('pic' => $imageName));
$request->file('pic')->move(base_path()."/public/profile_pics",$imageName);

Log::info($request);

Laravel日志

有任何想法吗?

吉德里乌斯·基什(GiedriusKiršys)

您无法如此轻松地删除文件。这里的问题很复杂,但我会尽力解释。

因此,基本上,每次您初始化请求并尝试从中获取数据时,请求都会转换所有文件并将它们存储在受保护的数组中。
然后,当您请求->all()将所有纯输入与文件输入递归合并时,因此,如果您具有名称为纯文本的输入和名称为name的pic文件pic,则文件的显示优先级高于纯文本输入。

现在肮脏的廉价解决方案:

    $request = new Request($request->all());
    $request->merge(['pic' => 'zzz']);
    dd($request->all());

使用原始请求中的属性形成新请求,然后您的新请求将没有任何文件,因此您可以轻松地合并其中的任何内容。


因此,得出以下结论:一旦尝试从请求访问ANY值,它将把文件保存在受保护的数组中,并且现在无法删除它们。
但是,如果您有干净的请求,而之前没有任何访问权限,则可以通过编写以下代码行轻松地删除它们:$request->files = collect();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章