Laravel访问嵌套数组中的文件上载

时间:2015-05-18 14:43:29

标签: php laravel laravel-5

我需要构建一个允许多个文件上传的表单,并且还允许可重复的表单组。可以重复的表单组包含可以动态添加的上载字段,例如添加另一个文件功能。

我无法弄明白的一件事是,如果他们在请求中嵌入数组中,我就可以访问上传的文件,即Request :: file(' upload');不会工作。

以下是文件输入HTML的示例,您可以看到正在进行的嵌套级别。

# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, unicode_literals, print_function
import os
import tarfile

class TarfileWhichRaisesOnEOF(tarfile.TarFile):
    def extractall(self, path=".", members=None):
        super(TarfileWhichRaisesOnEOF, self).extractall(path, members)
        if members is None:
            members = self

        for tarinfo in members:
            if not tarinfo.isfile():
                continue
            file=os.path.join(path, tarinfo.name)
            size_real=os.path.getsize(file)
            if size_real!=tarinfo.size:
                raise tarfile.ExtractError('Extracting %s: Size does not match. According to tarinfo %s and on disk %s' % (
                    tarinfo, tarinfo.size, size_real))

为每个新表单组添加请求索引,以添加用户在应用程序上发出的请求列表。

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

我在我的机器上试过这个。

$inputs = Request::all();
var_dump($inputs);

    //prints
    array (size=2)
  '_token' => string 'jpY1dJy5t8' (length=40)
  'request' => 
    array (size=2)
      0 => string 'st2.jpg' (length=7)
      1 => string 'st2.jpg' (length=7)

请尝试使用以下内容更新输入字段...

    <input class="js-file-input" name="request[0]files[]" type="file" />
    <input class="js-file-input" name="request[1]files[]" type="file" />

答案 1 :(得分:0)

只是跟进以防万一有人试图做类似的事情。我已经取得了一些进展,我可以通过提供数组密钥来访问文件。

所以$ file = Request :: file('request')[0] ['files']将返回第一个嵌套文件数组的所有文件,这样我就可以循环并保存它们。我想通过检查每个数组是否包含像hasFile这样的文件应该有效。不是真正感觉到这样做的正确方法,但它看起来是目前唯一的方式。

我需要将文件输入HTML更新为:

<input class="js-file-input" name="request[0][files][]" type="file" />

答案 2 :(得分:0)

访问文件的另一种方法是这样

$files = $request->request[0]['files'];