Laravel-5删除文件夹或文件不起作用

时间:2017-09-26 09:24:01

标签: laravel laravel-5

<?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

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。如果您的disklocal,则$root目录将为storage/app,如果public,则$root目录将为storage/app/public 。所有操作:createmovedelete都会在定义的$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')