【问题标题】:How to send file access url for a file stored in google drive to client in laravel?如何将存储在谷歌驱动器中的文件的文件访问url发送到laravel中的客户端?
【发布时间】:2020-08-27 08:04:43
【问题描述】:

我正在使用 google drive 来存储提交给我的 laravel api 的文档。我已经为 google drive 创建了一个服务提供程序,具有以下启动功能:

 public function boot()
    {
        //
        \Storage::extend("google", function($app, $config){
            $client = new \Google_Client;
            $client->setClientId($config['clientId']);
            $client->setClientSecret($config['clientSecret']);
            $client->refreshToken($config['refreshToken']);
            $service = new \Google_Service_Drive($client);
            $adapter = new GoogleDriveAdapter($service, $config['folderId']);
            return new Filesystem($adapter);
        });
    }

我还执行了所有其他必要的步骤,例如在 filesystems.php 中添加“google”磁盘,其中包括所有必要的值,例如“driver”、“clientId”等。

我可以通过简单地将“google”作为第二个参数调用存储来成功地将传入的文档保存到谷歌驱动器,如下所示:

$request->file('document')->store("", "google");

但这似乎只返回存储在驱动器中的文件的名称。但作为响应,我想发送一个链接,该链接可用于重定向用户以查看驱动器中的特定文档。我该怎么做?

【问题讨论】:

    标签: php laravel google-drive-api


    【解决方案1】:

    您可能需要对返回的文件 ID 执行 file.get

    $service->files->GetFiles($fileId);
    

    假设它是一个谷歌驱动器类型的文件,那么应该有一个链接允许用户在谷歌驱动器中打开文件。 file response

    但是您应该注意,除非您将文件的权限设置为公开,否则用户将无法访问该文件,因为它归服务帐户所有。

    【讨论】:

    • @DalmTo 我对 laravel 和 php 很陌生,所以这可能是一个愚蠢的问题。我应该在您提供的代码中分配什么服务变量?
    • @DalmTo 必须在 boot 函数内部。如果是这样,我如何将文件 id 传递给该函数并确保在调用 store 函数时返回访问链接?
    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多