从阵列动态检索控制器中的媒体上载

时间:2018-07-30 11:58:40

标签: json file upload laravel-5.1 laravel-controller

我正在使用Laravel 5.1,并且正在使用Illuminate \ Http \ Request实例来访问发送的文件请求,但是我似乎找不到正确的方法来访问media元素。我可以访问该对象中的所有其他值。

这是我正在使用的JSON数据格式:

{"_method":"PUT",
"topic":"1 test",
"description":"1 test",
"media_description":"1 test",
"old_parts":
  {"part-1":
    {"sub_header":"test 2",
     "text_field":"test 2 ",
     "article_id":"18",
     "media":{}},
  "part-2":
    {"sub_header":"test 3 ",
     "text_field":"test 3",
     "article_id":"18",
     "media":{}}
  },
"published":"1",
"media":{}
}

我使用两个foreach循环访问控制器中的介质,一个循环用于数据库收集,另一个循环用于表单内容。我可以使用以下方法访问媒体元素。

if ($file = $request->file('media-' . $running_number)) {...} 

但是它大大降低了可读性,因为我应该将字段命名为作为media-1,media-2 ......,而不像我对其他所有操作一样使用foreach循环访问它们。

那么有没有办法使用foreach循环变量访问文件?

f.e。像这样

foreach($input['old_parts'] as $old_part) { 

  if ($old_part->hasFile('media')) { ... }

}

如果我使用键入的行,该函数将返回FatalThrowableError:调用数组上的成员函数hasFile()。

还是我应该使用类似的东西

$request->file('old_parts[part-'.$x.'][media]');

要访问文件输入并使用自定义变量来计算索引?问题只是我无法弄清楚如何使用文件进入JSON中的多个级别,就像old_parts ['..'] ['..']和old_parts ['part-1']-> media don似乎什么也不返回(返回null)。

0 个答案:

没有答案