【问题标题】:Laravel cannot access FormData from an HTTP POST request?Laravel 无法从 HTTP POST 请求访问 FormData?
【发布时间】:2018-12-09 00:33:26
【问题描述】:

当我将内容类型设置为 multipart/form-data 时,我无法从我的请求中获取值,但是当我将内容类型设置为 application/x- www-form-urlencoded 一切都按预期工作。这些值似乎是空的。

我通过 Postman 发送的请求:

Laravel API sn-p:

use Illuminate\Http\Request;

      ...

public function foo(Request $req){
    echo $req->get('some_key');
}

我尝试通过 $req->get('key_name'), $req->key_name 提取值,但无济于事。调用 $req->all() 方法为我提供了具有正确内容的数组,但我也无法从中提取值,有没有更简单的方法来实现这一点?提前致谢。

【问题讨论】:

  • 什么是 HTTP 响应?您是否在请求中发送令牌?
  • @Jason 它只是什么都不打印,返回我设置它返回的任何响应代码。它的行为就好像值是空的。没有授权令牌,没有附加任何类似的东西。
  • 您找到解决方案了吗?我有同样的问题,接受的答案根本没有帮助......因为我想发布
  • @DarioRega 如果我没记错的话,我默认使用 application/x-www-form-urlencoded,对不起..
  • 感谢您的回答,我的问题是我在 linux 上的 psotman 版本,我必须升级到 8。因为我不知道为什么版本 7 中的请求为空

标签: laravel http


【解决方案1】:

使用multipart/form-data时,将操作设置为PUTPATCH,并确保使用FormData对象客户端:

let Data = new FormData();

// using vuejs as an example of appending files.
Data.append( 'your_file', this.$refs.input.files[0], this.$refs.input.files[0].name ); 
Data.append('_method', 'PATCH');

axios.post('/api/foo', Data ).then( Response => { 
   // handle success
});

【讨论】:

  • 试过了,没有任何改变:/我在客户端使用 Angular (2),我确信我的 FormData 对象格式正确,得到了邮递员请求的确认,我得到了相同的结果。
  • 你在浏览器网络检查器中查看过网络请求吗?
  • 是的,这一切似乎都有效,因此我认为这不是我发送的请求的问题,而是我尝试在后端解析请求的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2020-07-14
  • 2023-04-02
  • 2021-03-31
相关资源
最近更新 更多