php - 合并请求不起作用

标签 php laravel http request

我正在尝试用图像文件名替换“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 Log

有什么想法吗?

最佳答案

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

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

现在又脏又便宜的解决方案:

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

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


总而言之:一旦您尝试从请求中访问任何值,它会将文件保存在 protected 数组中,现在无法删除它们。
但是,如果您有干净的请求,之前没有任何访问权限,您可以通过编写以下行轻松删除它们:$request->files = collect();

关于php - 合并请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37232340/

相关文章:

php - 页面加载对象两次

javascript - 使用 jquery json 从 php 获取变量

php - 优化 PHP 中的递归方法

mysql - Laravel 默认用户迁移

php(复杂)动态变量名构造

php - AWS 自动缩放架构中的 Laravel API 节流问题

php - 在 laravel 护照客户端应用程序中使用访问 token 获取用户数据

http - 将重叠的音频文件流式传输到 Chromecast Audio

json - angularjs $http.get-Request for json on ebay 不起作用

php - 在 Laravel 5 中将所有 Http 请求重定向到 Https