从google drive(文件系统)或(从链接中隐藏api密钥)下载Laravel
下载的第一种方式: 把我的API密钥放在链接中,我就可以直接从我的谷歌硬盘下载文件了。但是我不想把我的API_密钥给用户 2.我也可以通过另一种方式访问我的硬盘:(从google drive(文件系统)或(从链接中隐藏api密钥)下载Laravel,laravel,google-drive-api,api-key,Laravel,Google Drive Api,Api Key,下载的第一种方式: 把我的API密钥放在链接中,我就可以直接从我的谷歌硬盘下载文件了。但是我不想把我的API_密钥给用户 2.我也可以通过另一种方式访问我的硬盘:(使用nao pon/flysystem谷歌硬盘) 这样,我不必使用api_密钥,但服务器必须下载整个文件—这是一个流,但仍然使用服务器资源 另一方面,https://www.googleapis.com/drive/v3/files/1YIH4zfM0P1xa-_mfZNGiIY8qZrIEt-rF/?key=API_KEY&alt
使用nao pon/flysystem谷歌硬盘
)
这样,我不必使用api_密钥,但服务器必须下载整个文件—这是一个流,但仍然使用服务器资源
另一方面,https://www.googleapis.com/drive/v3/files/1YIH4zfM0P1xa-_mfZNGiIY8qZrIEt-rF/?key=API_KEY&alt=media
需要内容类型和文件名,因为上面没有。而且我不知道如何隐藏api密钥
那么您有什么建议。有没有其他方法不响应()->stream不通过服务器逐流下载整个文件,然后将其发送给用户?多个用户下载文件将占用所有带宽,因此下载速度下降得如此之快。在您的情况下,文件是使用API密钥下载的。在这种情况下,文件是公开共享的。您想隐藏API密钥。如果我的理解是正确的,那么在没有API密钥的情况下下载怎么样?对于这一点,这种方法有用吗@Tanaike Hi感谢您的回复。但在某些情况下,如我的情况下,我们可能不想公开共享该文件,这就是我们使用api密钥的原因。感谢您的回复。不幸的是,我无法理解你的回答。这是因为我的技术差。对此我深表歉意。@Tanaike如果你想公开共享一个文件,很简单,你可以不使用api密钥下载它。但是如果它是私有的,那么你必须在链接中包含api密钥,以便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','(.*)');