使用 Google 驱动器 API 将文件上传到 Google 驱动器时如何设置自定义文件 ID? (PHP)

How To Set Custom File ID While Uploading a File To Google Drive Using Google Drive API? (PHP)

我正在做一个项目,我需要通过 Google 驱动器 API 将 .xlsx 文件上传到我的 google 驱动器。然后还要取回 link,这样我就可以将它存储到 MySQL 数据库中。

上传部分完成。问题是,我怎样才能取回文件 link 以便我可以使用 Google 表格对其进行编辑。我想我需要将自定义文件 ID 添加到我的文件中。我真的不知道在哪里添加它。我的代码如下:

// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);
$filefullname=$_GET['accid'].' '.$_GET['name'].'.xlsx';
// UPLOADING OF FILE TO GOOGLE DRIVE////////////////////////////////////
//fopen('./client_sheets/'.$_GET['name'], "w");
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $file = new Google_Service_Drive_DriveFile();
        $file_path = './client_sheets/'.$filefullname;
        $mime_type = finfo_file($finfo, $file_path);
        $file->setName($filefullname);
        $file->setDescription('This file contains details about: '.$filefullname.' || Client of GT Security');
        $file->setMimeType($mime_type);
        $file->setName($filefullname);
        $createdFile = $service->files->create(
            $file,
            array(
                'data' => file_get_contents($file_path),
                'mimeType' => $mime_type,
                'fields' => 'id'
            )
        );

print 'File ID: %s' % $createdFile->getId();

更多信息:我使用 PhpSpreadsheet 创建了 .xlsx 文件。请问有人可以为我添加 FileID 字段吗?另外,有人可以向我解释如何获取文件 link 以便我可以使用 Google 表格对其进行编辑吗?

在这种情况下,您可以使用 Google 驱动器自动转换功能。当您在 google 驱动器中创建文件时,它将自动转换为电子表格文件。这样您就可以通过电子表格服务打开它并获取您需要存储在数据库中的url。

创建 .xlsx 并将其转换为电子表格文件:

$fileMetadata = new Google_Service_Drive_DriveFile(array(
    'name' => $filefullname,
    'mimeType' => 'application/vnd.google-apps.spreadsheet'));
$content = file_get_contents($file_path);
$file = $driveService->files->create($fileMetadata, array(
    'data' => $content,
    'mimeType' => 'text/csv',
    'uploadType' => 'multipart',
    'fields' => 'id'));

获取电子表格url:

$spreadsheetId = $file->id;

$sheetService = new Google_Service_Sheets($client);
$response = $service->spreadsheets->get($spreadsheetId);
$sheetUrl = $response->getSpreadsheetUrl();

参考文献:

PHP Spreadsheet class methods

Import to Google Docs types