【问题标题】:Laravel 5.4 Storage::delete() not working (method delete not found)Laravel 5.4 Storage::delete() 不起作用(找不到方法删除)
【发布时间】:2019-05-15 00:33:04
【问题描述】:

我在让 Storage::delete($filepath); 在 Laravel 5.4 中工作时遇到问题。

我已经搜索过其他有此问题的人,但大多数其他人似乎遇到的错误是提供的文件路径没有前面的/,但这不是我的问题。

我正在使用use Illuminate\Support\Facades\Storage;(根据Laravel Docs),我注意到我在PHPStorm 中收到错误消息Method delete not found in Illuminate\Support\Facades\Storage

我的代码是这样的;

<?php

namespace App\Http\Controllers;

...
use Illuminate\Support\Facades\Storage;
// also tried use Storage;
...

public function deleteFile($id)
{
    try {
        $image = Files::where('id', $id)->get()->first();
        Storage::delete($image->filepath);
        return Files::destroy($id);

    } catch ( \Exception $e) {
        return back()->with('alert-warning', 'Something went wrong: ' . $e);
    }
}

我的 $image->文件路径看起来像 /Users/usrname/sites/sitename/storage/app/images/34/o8Aq1T3Hi67sOtuTgBh9P7QWA1Ahj4KH2QBR77n0.png

有人可以帮忙吗?

【问题讨论】:

  • 它不应该在立面上。看看外观是如何工作的:laravel.com/docs/5.4/facades#how-facades-work 另外,github.com/barryvdh/laravel-ide-helper 是一个很棒的开发工具,有助于防止这些 IDE 问题并提供更好的代码完成
  • @Pevara 谢谢你,我会去看看。你有什么想法为什么这不起作用?不幸的是,我没有看到任何错误消息..?
  • 应该是use Storage,而不是use Illuminate\Support\Facades\Storage
  • Files::findOrFail($id) 也可能更干净,但这与您的问题无关)
  • 我尝试使用存储,不幸的是没有解决它。

标签: php laravel laravel-5


【解决方案1】:

我有另一个问题,我正在打电话

Storage::delete($path);

没有磁盘,所以我放了这个,它可以工作。

Storage::disk('public')->delete($path);

【讨论】:

    【解决方案2】:

    好的,所以 $filepath 需要相对于应用程序的存储根目录,而不是文件的完整文件路径!

    我使用了一个函数来更新我的文件路径;

    images/34/o8Aq1T3Hi67sOtuTgBh9P7QWA1Ahj4KH2QBR77n0.png 很有魅力。

    【讨论】:

    • 另外提一下,如果 www-data 没有删除该文件的权限,它不会删除它,您也不会收到任何错误。因此请确保 www-data 有权删除存储文件夹中的文件。 PHP unlink 会抛出 Laravel Storage 不会抛出的错误,所以你可以使用这些函数来进行调试。
    【解决方案3】:

    在:config/filesystems.php 默认:

    'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
    

    所以如果你的图片在 storage/app/public/ 文件夹中,你的图片存储路径应该是:

    'public/image.jpg'

    要从存储中删除此图像,您应该编写:

    Storage::delete('public/image.jpg)
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误,尝试了 File::delete() 然后它成功了。

      【讨论】:

      • 这对我来说也是最可靠的方法
      猜你喜欢
      • 2019-06-09
      • 2021-05-31
      • 2020-10-01
      • 2018-12-22
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      相关资源
      最近更新 更多