【发布时间】:2020-02-16 17:16:38
【问题描述】:
我对 Google Cloud Storage 感到非常困惑。 我不是程序员,所以我使用 Laravel 和 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'
]);
});
控制器动作中的一些完全伪代码,我不在这里做什么...我什至不知道如何获取对象(文件)...
$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']);
【问题讨论】:
标签: php laravel download google-cloud-storage