【问题标题】:Delete files uploaded in external Disk(DigitalOcean) in laravel在laravel中删除外部磁盘(DigitalOcean)中上传的文件
【发布时间】:2019-09-26 17:19:57
【问题描述】:

我正在使用数字海洋(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');

【问题讨论】:

    标签: php laravel file-upload digital-ocean delete-file


    【解决方案1】:

    提供删除功能的路径(与您上传时使用的路径相同),以便从您的数字海洋空间中删除文件

    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');
    

    【讨论】:

    • 是的,这行得通,我的错误是把完整的url放在delete方法中。
    • 很高兴能为您提供帮助,如果它解决了您的问题,请考虑接受答案
    • 感谢您的信息,不知道完整路径不起作用。要获取图像文件夹路径,请使用此代码“parse_url($image_url, PHP_URL_PATH)”
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 2019-12-27
    • 2018-02-25
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多