Use Google Drive API with Laravel

后端 未结 3 697
轻奢々
轻奢々 2020-12-09 00:18

I want to use the Google Drive API in my Laravel project to store PDFs. Unfortunately, the example code is for common PHP and I don\'t know how could I implement it in Larav

3条回答
  •  误落风尘
    2020-12-09 00:58

    For login + file upload on drive (https://github.com/google/google-api-php-client/blob/master/examples/large-file-upload.php)

    ';
    $client_secret = '';
    $redirect_uri = '';
    
    $client = new Google_Client();
    $client->setClientId($client_id);
    $client->setClientSecret($client_secret);
    $client->setRedirectUri($redirect_uri);
    $client->addScope("https://www.googleapis.com/auth/drive");
    $service = new Google_Service_Drive($client);
    
    if (isset($_REQUEST['logout'])) {
      unset($_SESSION['upload_token ']);
    }
    
    if (isset($_GET['code'])) {
      $client->authenticate($_GET['code']);
      $_SESSION['upload_token'] = $client->getAccessToken();
      $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
      header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
    }
    
    if (isset($_SESSION['upload_token']) && $_SESSION['upload_token']) {
      $client->setAccessToken($_SESSION['upload_token']);
      if ($client->isAccessTokenExpired()) {
        unset($_SESSION['upload_token']);
      }
    } else {
      $authUrl = $client->createAuthUrl();
    }
    
    /************************************************
      If we're signed in then lets try to upload our
      file.
     ************************************************/
    if ($client->getAccessToken()) {
      $file = new Google_Service_Drive_DriveFile();
      $file->title = "Big File";
      $chunkSizeBytes = 1 * 1024 * 1024;
    
      // Call the API with the media upload, defer so it doesn't immediately return.
      $client->setDefer(true);
      $request = $service->files->insert($file);
    
      // Create a media file upload to represent our upload process.
      $media = new Google_Http_MediaFileUpload(
          $client,
          $request,
          'text/plain',
          null,
          true,
          $chunkSizeBytes
      );
      $media->setFileSize(filesize(TESTFILE));
    
      // Upload the various chunks. $status will be false until the process is
      // complete.
      $status = false;
      $handle = fopen(TESTFILE, "rb");
      while (!$status && !feof($handle)) {
        $chunk = fread($handle, $chunkSizeBytes);
        $status = $media->nextChunk($chunk);
      }
    
      // The final value of $status will be the data from the API for the object
      // that has been uploaded.
      $result = false;
      if ($status != false) {
        $result = $status;
      }
    
      fclose($handle);
    }
    echo pageHeader("File Upload - Uploading a large file");
    if (
        $client_id == ''
        || $client_secret == ''
        || $redirect_uri == '') {
      echo missingClientSecretsWarning();
    }
    ?>
    
    

提交回复
热议问题