Вчера я настроил его так, чтобы я мог обслуживать файлы MP3, хранящиеся в моем Dropbox, используя https://github.com/spatie/dropbox-api и Laravel. Однако это работает только для небольших файлов, так как он работает сейчас: сначала нужно загрузить весь файл, а затем передать его из Laravel. Это не работает вообще для фильмов или для длинных треков, поскольку это занимает вечность и не хватает памяти.
Вот код, который я сейчас использую
$authorizationToken = 'my-api-token';
$client = new \Spatie\Dropbox\Client($authorizationToken);
$path = "/offline/a-very-long-song.mp3"; // path in dropbox
$stream = $client->download($path);
$file = stream_get_contents($stream);
fclose($stream);
unset($stream);
$file_info = new \finfo(FILEINFO_MIME_TYPE);
return response($file, 200)->withHeaders([
'Content-Type' => $file_info->buffer($file),
'Content-Disposition' => 'inline; filename="' . basename($path) . '"',
]);
Мне было интересно, есть ли способ его потоковой передачи, чтобы не загружать сначала весь файл. Я предполагаю, что это происходит естественным образом, когда вы загружаете мультимедийный файл в браузер, но поскольку в Dropbox нет прямых ссылок на физический файл, я не уверен, возможно ли это.