【问题标题】:Uppy "PUT" XHR(multipart/form-data) request results to empty Laravel $request arrayUppy "PUT" XHR(multipart/form-data) 请求结果清空 Laravel $request 数组
【发布时间】:2020-11-17 08:49:08
【问题描述】:

希望你们能帮助我。我正在使用带有XHRUpload 插件的Uppy 来上传文件,但是当我即将使用PUT 请求更新文件时,我在服务器端(Laravel)得到了一个$request 的空数组。我已经尝试过方法欺骗,但仍然没有运气。这是我的代码...

顺便说一下,我正在使用uppy.setMeta 向请求中添加一些额外的数据。

    uppyUploader.setMeta({ 
      ...($(this).data('action') != 'store') && { _method: 'PUT' }, // Method spoofing of Laravel but the original method is 'POST'
      filename: $('input[name="filename"]').val(),
      ...
    });
    uppyUploader.upload();

但我在更新控制器方法的 $request 中得到了这个

$request->all(); // [] <-- empty array

【问题讨论】:

  • 尝试$request-&gt;allFiles();从请求中获取文件。

标签: laravel api xmlhttprequest uppy


【解决方案1】:

原来这只是服务器端的缓存问题。只是要记住的注意事项,如果您使用 XHR,您可以轻松地将方法设置为 PUT,但是当您使用传统表单时,您必须确保使用 @method('PUT') 欺骗方法并设置表单方法POST 因为 HTML5 表单不支持 PUT 方法。谢谢你的协助。快乐编码。

【讨论】:

  • 您能提供解决方案吗?
【解决方案2】:
  • 要验证文件是否在请求中可用,您可以使用$request-&gt;hasFile('filename')

  • 要从请求中获取特定文件,您可以使用$request-&gt;file('filename')$request-&gt;filename

  • 要从请求中获取所有文件,您可以使用$request-&gt;allFiles()


更多详情请查看 Laravel 文档https://laravel.com/docs/master/requests#files

【讨论】:

  • 您的回答与问题无关,我也有同样的问题,但您的回答与真正的问题无关,在阅读您的回答之前,我确实尝试了所有这些。
  • @Nazari 答案清楚地显示了如何从请求中获取文件。此外,我还展示了如何验证文件是否在请求中可用。如果您检查问题的最后一行,您可以看到他是如何尝试获取文件的。
猜你喜欢
  • 2021-10-11
  • 2012-04-04
  • 2019-11-09
  • 2019-07-23
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多