php - Laravel 请求文件更改

标签 php laravel request

当我使用 key “siup”上传文件时,Request Laravel 遇到问题,请求数据如下所示:

"_token" => "Ab9zfuQn0rb0exCx7IdMcnAxQWi4iqWcfcDy319B"
"_method" => "PUT"
"first_name" => "first"
"last_name" => "aaa"
"email" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c0a2aca1a3abeeb99febb4a180a5ada1a9aceea3afad" rel="noreferrer noopener nofollow">[email protected]</a>"
"province" => "11"
"city_id" => "38"
"address" => "asdasd"
"phone" => "1234567890"
"company_type" => "koperasi"
"company_name" => "qqq"
"company_address" => "qqq"
"pic" => "qqqa"
"position" => "qqq"
"siup" => UploadedFile {#30 ▶}

我想对请求响应执行此操作

$request->merge(['siup'=>$myVar]);

但是 key siup没有改变。我想更改 siup 值以使用 laravel eloquent update 将其插入数据库。

最佳答案

Request 对象公开的请求数据来自两个不同的来源:查询数据和文件。当您转储请求数据的内容时,它将这两个源合并在一起,这就是您的输出。

当您使用merge()replace()等方法时,它只是操作查询数据。因此,即使您尝试覆盖 siup 数据,实际上也只是更改查询数据中的 siup 键。文件数据中的siup键未被触及。当您再次转储请求数据的内容时,siup 文件数据将覆盖您的 siup 查询数据。

如果您只是将数据作为数组获取,然后根据需要使用该数组,您会省去很多麻烦。这比尝试操作 Request 对象更安全、更容易,并且可能更符合您应该做的事情。

类似于:

$data = $request->except('siup');
$data['siup'] = $myVar;

// now use your data array
MyModel::create($data);

关于php - Laravel 请求文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051646/

相关文章:

python - 向端点发送 POST 请求会导致 "binding element must be a struct"

Python HTTPS 请求 SSLError CERTIFICATE_VERIFY_FAILED

php - 什么阻止了 fsockopen?

php - 如何解决 Laravel 中检查数据库值/变量可用性的问题

Laravel Dusk + Vue 与 ElementUI

mysql - Laravel 查询构建内连接

javascript - 服务器无法使用从 Electron 应用程序发送的应用程序/xml 请求

php - 将 HTML 文件加载到 PHP 变量中?

php - SQL查询根据某列值获取所有记录

php - 无法覆盖 Symfony 4 上 POST 请求中可选参数的默认值