我遇到了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
任何人都可以提供帮助吗?
答案 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);