Laravel 在 POST 方法中从 multipart/form-data 获取请求

Posted

技术标签:

【中文标题】Laravel 在 POST 方法中从 multipart/form-data 获取请求【英文标题】:Laravel get requests from multipart/form-data in POST method 【发布时间】:2021-08-03 02:02:16 【问题描述】:

我收到第三方对我的 laravel post API 的请求,其中包含两个带有标题的表单数据(ID、文件)(Content-type multipart/form-data

在 laravel 控制器中,在 $request->all() 中没有收到请求,但可以在 file_get_contents('php://input') 中看到表单数据。

在没有内容类型 multipart-formdata 的同一请求中,它工作正常,获取请求 - id 和文件。 (我已经使用相同的第三方请求参数检查了 Postman)

作为 multipart-formdata 的内容类型是从第三方请求的,因此无法删除或修改标头。如何使用 POST 方法在 laravel 中正确接收?

请指导。

【问题讨论】:

$request->getContent() 带给你什么? 同 file_get_contents('php://input') 但是否可以解析该结果以获取输入 id 和文件(pdf) 您是否将任何第三方中间件应用于您的 apis 路由? 不,不应用任何中间件 【参考方案1】:

假设您的enctype="multipart/form-data" 是正确的并且文件名是myfile, 你应该得到它

$file  = $request->file('myfile');

在您的控制器或其他类中,例如 FormRequest 类或 Validation 类

【讨论】:

谢谢。 $request->file & $reqeust->all 都只返回空数组。 @Tamilvanan,你能去源代码并在你的问题中发布 html 吗?

以上是关于Laravel 在 POST 方法中从 multipart/form-data 获取请求的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中从数据库存储和加载 JSON 的最佳方法

在 Laravel 6 中从外键获取数据

来自同一登录的Laravel Multi-auth(多个用户表)

在 Laravel 7.x 中从 DB::select 获取单个值

如何在laravel中从多对多关系中检索多个记录

Laravel 5 - 多维 groupBy、orderBy 和 paginate