roe*_*rjo 3 php http request laravel
我试图替换'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);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
你不能轻易摆脱文件.这里的问题很复杂,但我会尝试解释.
所以基本上每次初始化请求并尝试从中获取数据时,请求都会转换所有文件并将它们存储在受保护的数组中.
然后,当您请求->all()它递归合并所有普通输入与文件输入时,因此如果您具有带名称的纯文本输入和带有名称的pic文件pic,则文件具有比纯文本输入更高的优先级.
而现在脏的廉价解决方案:
$request = new Request($request->all());
$request->merge(['pic' => 'zzz']);
dd($request->all());
Run Code Online (Sandbox Code Playgroud)
使用原始请求的属性形成新请求,然后您的新请求将没有任何文件,因此您可以轻松地合并您需要的任何内容.
总而言之:一旦您尝试从请求中访问任何值,它将保存受保护数组中的文件,现在无法删除它们.
但是,如果您有干净的请求,之前没有任何访问权限,您可以通过编写以下行来轻松删除它们:$request->files = collect();
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |