在 laravel 中删除上传到外部磁盘 (DigitalOcean) 的文件

Delete files uploaded in external Disk(DigitalOcean) in laravel

我正在使用 digital ocean(do) 保存文件而不是存储在我的服务器中,现在我可以毫无问题地上传文件,但我需要删除上传的文件,而不仅仅是在数据库中,我一直尝试删除它:

Storage::delete('url/to/file');
unset('url/to/file);

但这行不通。

这是我的代码

$upload = Upload::find($id);
$upload->delete();
Storage::delete($upload->getVideo()); //it doesn't give me any mistakes
//$upload->getVideo(); retun the url
$upload->delete();

要上传文件,我正在使用此代码:

$path = Storage::disk('do')->putFileAs( $order->user->hash, $request->file('file'), bin2hex(random_bytes(24)).'.'.$extencion, 'public');

提供删除功能的路径(与您用于上传的路径相同),以便从您的 Digital Ocean 中删除文件 Space

Storage::disk('digital-ocean')->delete('path/to/file.jpg');

如果任何人只需获取您用于公开提供文件的 URL 即可删除该文件,那将是一个安全问题

来自Docs

正在删除文件

delete 方法接受要从磁盘中删除的单个文件名或文件数组:

use Illuminate\Support\Facades\Storage;

Storage::delete('file.jpg');

Storage::delete(['file.jpg', 'file2.jpg']);

如有必要,您可以指定要从中删除文件的磁盘:

use Illuminate\Support\Facades\Storage;

Storage::disk('s3')->delete('folder_path/file_name.jpg');