Laravel 5.4存储:: delete()无法正常工作(找不到方法删除)

时间:2017-05-11 17:45:10

标签: php laravel laravel-5

我遇到了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-&gt;文件路径看起来像/Users/usrname/sites/sitename/storage/app/images/34/o8Aq1T3Hi67sOtuTgBh9P7QWA1Ahj4KH2QBR77n0.png

任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:6)

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

我使用函数将文件路径更新为;

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

答案 1 :(得分:1)

我遇到了同样的错误,尝试过File :: delete()然后就可以了。

答案 2 :(得分:1)

在默认情况下位于config / filesystems.php中:

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

因此,如果您的映像位于storage / app / public /文件夹中,则您的存储映像路径应为:

'public / image.jpg'

要从存储中删除该图像,您应输入:

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

答案 3 :(得分:0)

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

Storage::delete($path);

没有磁盘,所以我把它放上了,并且可以工作。

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