测试多个文件上传时出现问题.Laravel 5.3


Issue while testing multiple files upload. Laravel 5.3

我这里有一个奇怪的问题。我试图"伪造"一个文件上传与"照亮'Http'UploadedFile"。因为我注意到类的每个实例都处理一个文件,所以我设法创建了一个返回实例数组的循环。通过这种方式,我认为我可以把这个数组放到请求体中。

测试调用看起来像这样:
$this->json("patch", "api/assets/1", ["damages" => $this->prepareDamagesPhotos());

而prepareDamagesPhotos():

的实现
protected function prepareDamagePhotos($how_many = 3, $image_name_no_extension_or_id = "dmg")
    {
        if ($how_many > 5) {
            throw new InvalidArgumentException("Cannot load more than 5 damage images");
        }
        if ($how_many == 0) {
            throw new InvalidArgumentException("Cannot load 0 images");
        }
        $images = [];
        for ($i = 1; $i < $how_many + 1; $i++) {
            $path = public_path("uploads/testing/damages/images/" . $image_name_no_extension_or_id . "#0" . $i . ".png");
            $image = new 'Illuminate'Http'UploadedFile(
                $path,
                $image_name_no_extension_or_id . "#0" . $i . ".png",
                "image/png",
                filesize(public_path("uploads/testing/damages/images/". $image_name_no_extension_or_id . "#0" . $i .
                                     ".png")),
                NULL,
                TRUE
            );
            array_push($images, $image);
        }
        return $images;
    }

整个事情都可以工作,但是当涉及到死亡和转储$input->all()时,这是输出:

array:1 [
  "damages" => array:3 [
    0 => []
    1 => []
    2 => []
  ]
]

我想知道这种方法有什么问题,因为传递UploadedFile的单个实例就像魅力一样。为什么数组被其值刷新,但保持其结构?有限责任

我也试图找到另一种方式来处理这个问题,但我发现的所有问题都与单个文件上传有关。我再说一遍,这已经很有效了。

我真的很困惑……任何帮助吗?

我已经找到了另一种方法来处理这个问题,也许不是正确的解决方案,但我愿意接受更好的实现建议…

将方法从json更改为call并将文件传递给第四个参数似乎有效:

$result = $this->call("patch", "api/assets/1", [], [], $this->prepareDamagePhotos());

文件不再在网络空间丢失!