【问题标题】:Issue while testing multiple files upload. Laravel 5.3测试多个文件上传时出现问题。拉拉维尔 5.3
【发布时间】:2017-03-15 20:01:55
【问题描述】:

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

一切正常,但是当涉及到 die 'n dump $input-&gt;all() 时,输出如下:

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

这不好……

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

我也试图找到一种方法来以另一种方式处理此问题,但我发现的只是单个文件上传。我重复一遍,已经像一个魅力。

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

【问题讨论】:

    标签: php laravel file-upload


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2017-11-02
      • 2023-03-07
      相关资源
      最近更新 更多