从google drive(文件系统)或(从链接中隐藏api密钥)下载Laravel

从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

下载的第一种方式:

  • 把我的API密钥放在链接中,我就可以直接从我的谷歌硬盘下载文件了。但是我不想把我的API_密钥给用户

    2.我也可以通过另一种方式访问我的硬盘:(
    使用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','(.*)');