В моем приложении Laravel 5.2 я использую CloudConvert для преобразования моих файлов. Я реализовал асинхронное преобразование, которое требует публичного URL обратного вызова для моего сайта. Как это:
public function upload(Request $request) {
// Store uploaded file...
CloudConvert::file(/* path to the file */)
->callback(action('UploadController@saveFileFromProcess'))
->convert('pdf');
}
И обратный звонок:
public function saveFileFromProcess() {
try {
CloudConvert::useProcess($request->input('url'))
->save(/* path to file storage */);
} catch (\Exception $e) {
Log::error($e->getMessage());
return false;
}
return true;
}
Теперь конвертация работает просто отлично. Но я вижу в журналах, что Laravel выдает ошибку после того, как преобразование выполнено:
Содержимое Ответа должно быть строкой или объектом, реализующим
__toString (), дано логическое значение.
Я понимаю, что это потому, что маршрут вызывается и возвращается true
или же false
вместо, например, предоставление представления.
Что я тогда должен вернуть, чтобы избежать ошибки? Достаточно ли строки? Есть ли что-то конкретное, что я могу вернуть для такого звонка?
А что, если я все еще хочу остановить сценарий, например, когда конкретный Request
вход отсутствует?
Вы можете вернуть массив с ответом, например return ['status' => true];
, который автоматически будет преобразован в JSON, и вы можете использовать его, если вы получите доступ к этому маршруту с помощью AJAX.
Других решений пока нет …