首页 > 解决方案 > 使用 Google Drive API 在 Laravel 中删除文件

问题描述

我正在使用此命令将文件上传到 Google Drive(控制器中的存储功能):

$request->anexo->storeAs('1tD*******************-6', $file_name, 'google');

这是获取链接:

$link = Storage::disk('google')->url('1tD*******************-6/' . $file_name);

这工作正常。但是当我尝试删除该文件时,我在同一个控制器的销毁函数中找不到它。我已经尝试了下面的命令,它们都返回 false:

$att = OrdemAttachment::findOrFail($id);
$link = Storage::disk('google')->url('1tD*******************-6/' . $att->file_name);
// dd($link);
$exists = Storage::disk('google')->has('1tD*******************-6/' . $att->file_name);
// dd($exists);
$delete = Storage::disk('google')->delete('1tD*******************-6/' . $att->file_name);
// dd($delete);

是否必须使用另一个命令来代替这些命令?

标签: laravelgoogle-apigoogle-drive-api

解决方案


我想通了,我试图使用文件名,甚至试图使用谷歌驱动器链接。但有效的是使用文件 id(您可以在链接中找到 id)。因此,例如,如果文件的链接是https://drive.google.com/uc?id=1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD&export=media,删除 google 驱动器中带有 id 的文件将如下所示:

$delete = Storage::disk('google')->delete('1tD*******************-6/1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD');

1tD*******************-6 是子文件夹 ID,1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD 是从链接中提取的文件的 ID。


推荐阅读