问题描述
我正在使用以下命令将文件上传到Google云端硬盘(控制器中的存储功能):
$request->anexo->storeAs('1tD*******************-6',$file_name,'google');
$link = Storage::disk('google')->url('1tD*******************-6/' . $file_name);
这很好。但是,当我尝试删除文件时,在同一控制器的destroy函数中找不到它。我已经尝试过下面的命令,并且所有命令都返回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);
是否有其他命令必须代替这些命令?
解决方法
我知道了,我试图使用文件名,甚至试图使用Google Drive链接。但是有效的方法是使用文件ID(您可以在链接内找到ID)。因此,例如,如果该文件的链接为https://drive.google.com/uc?id=1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD&export=media
,则要在ID为的Google驱动器中删除该文件,将是这样的:
$delete = Storage::disk('google')->delete('1tD*******************-6/1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD');
1tD *******************-6是子文件夹ID,而1AgF87s1lw9TSsRhVOpGNJ2K6wq3A8FzD是从链接提取的文件的ID。