Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Доброе утро!
При создании контролируемого скачивания файла столкнулась с проблемой, что response()->download() возвращает пустоту.
Логика была такая. Пользователь нажимает на ссылку и отправляется ajax запрос на контроллер file. Там происходит проверка на авторизацию пользователя и есть ли такой файл. Если все проверки пройдены, то вызывается приватная функция на скачивание файла, а в ответ на ajax запрос уходит json с информацией, то все успешно. Мне не понятно почему возвращается пустота.
public function download( Request $request ){
$file_symbol = $request->route('file_symbol');
if( Auth::user() ){
// Получение реального пути до файла
$file_model = new File;
$real_path = $file_model->getRealPath( $file_symbol );
$filexist = Storage::disk('local')->exists( $real_path );
if( $filexist ){
$this->permittedOperation( 'download', $real_path );
return response()->json(array('success' => true, 'message' => 'Success. Download started.'));
} else {
return response()->json(array('success' => false, 'message' => 'Error. File not found.'));
}
} else {
return response()->json(array('success' => false, 'message' => 'Error. No access.'));
}
}
Приватная функция.
private function permittedOperation( $operation_type, $real_path ){
switch ($operation_type) {
case 'download':
return response()->download( storage_path('app'.$real_path) );
break;
}
Буду рада помощи!:)
Не в сети
$file_model = new File;
$real_path = $file_model->getRealPath( $file_symbol );
Вы создали пустой объект.
Не в сети
Страницы 1