Я действительно запутался в облачном хранилище Google. Я не программист, поэтому я использую Laravel и Cloud Storage Client для PHP.
https://github.com/googleapis/google-cloud-php-storage
Что я пытаюсь сделать:
Фотограф загружаетфайл предварительного просмотра, любой может его просмотреть, и он хранится в моем хранилище по умолчанию.
\Illuminate\Support\Facades\Storage::disk(env('FILESYSTEM_DRIVER'))->put(
'storage' . DIRECTORY_SEPARATOR . $filename,
file_get_contents($filename),
\Illuminate\Contracts\Filesystem\Filesystem::VISIBILITY_PUBLIC
);
Затем фотограф загружает zip-файл со всеми фотографиями, скажем, в корзину с именем «downloads». Кто-то, кто заплатил за это, может щелкнуть ссылку, чтобы загрузить это. Как я могу замаскировать имя файла и убедиться, что URL не является общим? Я мог бы создать маршрут, где пользователь вошел в систему.
Route::group(['middleware' => ['role:user|store']], function() {
Route::get('download/{orderid}', [
'as' => 'download-link',
'uses' => 'OrderController@download'
]);
});
Какой-то тотальный код psuedo внутри действия контроллера, я не понимаю, что я делаю здесь ... Я даже не знаю, как получитьобъект (файл) ...
$query = DB::table('orders')->where('id', $request->get('orderid'))
->where('userid', Auth::user()->id)
->firstOrFail()->pluck('realfilename');
$reponse = Storage::disk('gcs')
->bucket('downloads')
->getObject($query['realfilename']);
return Storage::download('file.jpg', $name, ['Content-Type: application/zip']);