Первый способ скачать:
- https://www.googleapis.com/drive/v3/files/1YIH4zfM0P1xa-_mfZNGiIY8qZrIEt-rF/?key=API_KEY&alt=media
Поместить мой API-ключ в ссылку, которую он дает я могу загрузить файл прямо с моего диска Google. Но я не хочу давать свой API_KEY пользователям.
2.Я также могу получить доступ к своему диску другим способом: (using nao-pon/flysystem-google-drive
)
Route::get('/download/{rest?}', function ($rest) {
$metadata = Storage::cloud()->getMetadata($rest);
$readStream = Storage::cloud()->getDriver()->readStream($rest);
return response()->stream(function () use ($readStream) {
fpassthru($readStream);
}, 200, [
'Content-Type' => $metadata['mimetype'],
'Content-disposition' => 'attachment; filename="'.$metadata['name'].'"', // force download?
]);
})->where('rest','(.*)');
Таким образом, мне не нужно использовать api_key, но сервер должен загрузить весь файл, это поток, но он все еще использует ресурсы сервера.
На С другой стороны, https://www.googleapis.com/drive/v3/files/1YIH4zfM0P1xa-_mfZNGiIY8qZrIEt-rF/?key=API_KEY&alt=media
нужны Content-Type и File, поскольку его нет на нем. И также я не знаю, как скрыть ключ api.
Так что вы предлагаете. Есть ли другие способ не отвечать () -> поток, чтобы не загружать весь файл потоком через сервер, а затем отправлять его пользователю? Несколько пользователей, загружающих файлы, будут использовать всю пропускную способность, поэтому скорость загрузки падает настолько быстро.