在 google 驱动器中上传的文档缩略图 laravel

thumbnail of document uploaded in google drive in laravel

我有一个文件上传项目,用户上传文档 doc 或 pdf 将保存在 google 驱动器中。我希望在上传过程中获得缩略图或者可以将文档的第一页作为图像并将其保存在数据库中。

这是我的web.php

Route::post('/upload', function (Request $request) {
    $name=$request->file("thing")->getClientOriginalName();
    Storage::disk("google")->putFileAs("",$request->file("thing"),$name);
    $url=Storage::disk('google')->url($name);
    DB::insert('insert into books (Title, Url) values (?,?)', [$name,$url]);
    
    dd('uploaded');
})->name("upload");

我想将缩略图保存在数据库中。我怎样才能得到缩略图。我搜索了但没有找到任何方法。

如果我得到 google 驱动文件的 URL 然后在正常的 library.php 文件中写入代码来获取文件和 mata 数据,我是否必须连接到 google 再次驱动 API 或在 laravel 项目中执行此操作就足够了吗?

我有 library.php,其中 laravel 项目出现在我上传文件的按钮上。

如果无法在 laravel 中获取缩略图,那么任何人都可以告诉 php 的代码。我尝试了很多但无法在 stakeoverflow 中找到或找到一些示例,但我不知道在哪里可以在 php 文件中实现驱动器 API 的那些获取功能。

listFiles: function (folderId, onData, onError) {

    drive.files.get({
    auth: jwtClient,
    fileId: fileId,
    fields : "thumbnailLink"
})

我找到的示例代码,但我不知道在哪里纠正这个或 library.php,我是否需要连接到 API 以及如何连接。

我找了很多都没有找到任何东西,请帮忙。

我相信你目前的问题和你的目标如下。

  • 您的 drive URL 是 Google 驱动器上文件的 URL。
  • 您想从 Google 驱动器上的文件(PDF 和 Google 文档)下载缩略图数据。
  • 您想使用 googleapis 实现此目的 PHP。
  • 您已经完成了授权过程,您可以使用带有访问令牌的云端硬盘 API。

来自 https://drive.google.com/file/d/1YVTIGaAvnzH5vF_B1t8-bKsW2Q8ymZBy/view?usp=sharing 的 URL,在本例中,文件 ID 为 1YVTIGaAvnzH5vF_B1t8-bKsW2Q8ymZBy。我认为这可以用于实现您的目标。当这反映到 PHP 的 googleapis 的示例脚本中时,它变成如下。

示例脚本:

$service = new Google_Service_Drive($client); // Please use your "$client".
$fileId = '1YVTIGaAvnzH5vF_B1t8-bKsW2Q8ymZBy'; // This is the file ID from your sample URL.

$res = $service->files->get($fileId, ["fields" => "name,thumbnailLink"]);
$thumbnailLink = str_replace('=s220', '=s1000', $res->getThumbnailLink());
$name = $res->getName();
file_put_contents($name . '.png', file_get_contents($thumbnailLink));
  • 当你运行这个脚本时,缩略图link是从Google驱动器中的文件的文件ID中检索的,并且图像大小被改变,然后,下载缩略图数据并将其创建为文件。在当前阶段,下载缩略图数据不需要使用访问令牌。

注:

  • 在此示例脚本中,假设您的 $client 可用于检索 Google 驱动器上文件的文件元数据。请注意这一点。

参考: