Я использую laravel 5.6. Я пытаюсь протестировать форму post, для которой нужен file.
Я написал это
$file = new \Illuminate\Http\UploadedFile(base_path() . '/tests/samples/Cylinder.stl', 'Cylinder.stl');
$response = $this->post( route('attachments.store' ) , [
'file' => $file,
'attachable_id' => $this->threedviews->id,
'attachable_type' => 'App\ThreeDView',
]);
Но когда я dd( $this->app['session.store'] ), я получаю
#bags: array:1 [
"default" => Illuminate\Support\MessageBag {#1198
#messages: array:1 [
"file" => array:1 [
0 => "The file failed to upload."
]
]
#format: ":message"
}
]
Когда я использую форму вручную, все работает хорошо.
Также $file кажется странным
Illuminate\Http\UploadedFile {#43
-test: false
-originalName: "Cylinder.stl"
-mimeType: "application/octet-stream"
-error: 0
...
}
Флаг test установлен в значение false, это должно быть так?
@NirajShah laravel.log пуст, потому что приложение не дает сбоев, просто POST возвращает неожиданное сообщение об ошибке, но laravel не дает сбоев. А может log по умолчанию где-то еще для тестов?
Должно быть более конкретное сообщение об ошибке, генерируемое где-то помимо The file failed to upload. - похоже, это сообщение, возвращаемое Validator.






Что говорит ваш файл
laravel.log? Файл журнала должен содержать конкретное исключение, например права доступа к файлу или недопустимый путь.