<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use App\Good;
use App\Image;
class testpost extends Controller
{
//
public function execute(Request $request){
$file = "/Users/local/Desktop/111/2.png";
//$folder = "/Users/local/Desktop/111";
//unlink($file);
dd(Storage::delete($file));
//$status_delete_file=Storage::deleteDirectory($folder);
}
}
我正在尝试删除文件&#34; /Users/local/Desktop/111/2.png"。并且存储不会删除此文件或文件夹111.没有错误,总是返回&#34; false&#34;。试图通过标准函数PHP&#34; unlink&#34;
删除文件unlink($file)
一切都好了!
Laravel 5.4 PHP 7.1.1
答案 0 :(得分:2)
Laravel Storage
Facade用于管理Laravel文件系统磁盘的$root
目录中的文件。
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
....
],
请参阅此documentation。如果您的disk
为local
,则$root
目录将为storage/app
,如果public
,则$root
目录将为storage/app/public
。所有操作:create
,move
,delete
都会在定义的$root
目录中执行。
顺便说一句,Laravel使用league/flysystem
包来处理Storage
操作。您可以在资源包code中看到Storage::delete()
正在做什么。
// flysystem/src/Adapter/Local.php
/**
* @inheritdoc
*/
public function delete($path)
{
$location = $this->applyPathPrefix($path);
return unlink($location);
}
删除功能实际上调用unlink
函数。但在执行操作之前添加目录前缀。
例如:如果要删除uploads/image.jpg
磁盘存储中的文件public
,则只需要调用
Storage::delete('uploads/image.jpg')