繁体   English   中英

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

[英]Issue while testing multiple files upload. Laravel 5.3

我在这里有一个奇怪的问题。 我正在尝试使用“ Illuminate \\ 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;
    }

整个工作正常,但是当涉及到'n dump $input->all() ,这是输出:

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

不是很好...

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

我还试图找到一种以另一种方式处理此问题的方法,但是我发现的所有问题都与单个文件上传有关。 我再说一遍,已经像一种魅力。

我真的很困惑...有什么帮助吗?

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

将方法从json更改为call并将文件传递到第四个参数似乎可行:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM