3

我有一个文件上传器,我为此编写了以下测试:

$browser->visit('/product/professional-photo-prints')
        ->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

那不会上传文件。也没有错误。

但是,当我这样做时:

$browser->visit('/product/professional-photo-prints')
        ->tinker();

在 Tinker 启动的终端中,当我输入与测试中使用的完全相同的文件上传命令时:

$browser->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

...有用。我可以看到我的 Chrome 实例上传了文件和所有内容。

我一生都无法弄清楚从测试本身或从 Tinker 运行的命令之间可能有什么区别。

任何帮助将不胜感激。谢谢你。

PS 我正在使用 Laravel 5.5 和 Dusk 2.0

4

2 回答 2

4

DIR魔术常量是指正在执行的文件的父文件夹。

->attach('photo', __DIR__.'/storage/app/public/testing/test_upload.jpg');

当然,这个路径没有找到文件。你应该试试这个:

->attach('photo', storage_path('app/public/testing/test_upload.jpg'));
于 2017-09-22T11:37:49.810 回答
0

此外,如果您的测试文件在您的公共文件中(例如),您可以使用base_path;

例如:base_path("public/sample-recording/test.mp3")

于 2019-03-25T19:52:07.147 回答