laravel - 使用 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);
是否必须使用另一个命令来代替这些命令?
解决方案
我想通了,我试图使用文件名,甚至试图使用谷歌驱动器链接。但有效的是使用文件 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。
推荐阅读
- verilog - 在 Verilog (Vivado) 中向寄存器添加不同数字的问题
- dictionary - 如何对从 DashMap 中提取的项目进行模式匹配?
- jq - 解析嵌套 JSON 并使用 jq 创建新键
- javascript - 我需要在组件中显示一个列表,但发送的数据(以 JSON 格式)未正确解析
- python - “numbers = [range(1, 11)]”和“numbers = list(range(1, 11))”之间的区别
- docker - client_max_body_size 未生效
- laravel - 启用 CentOS 7(LAMPP 和 Laravel)服务器通过 SSL 发送电子邮件
- reactjs - 在按钮单击时呈现不同的 youtube 视频
- python - 在 Python 中更新 2D 数组值 - 更新整列错误?
- java - 不包括 NULL 和空字符串的 CreateQuery 必须同时在 Oracle 和 mySQL 中工作