Laravel,无法copyDirectory或moveDirectory

时间:2016-11-03 10:37:13

标签: php laravel filesystems

目前我遇到Laravel问题无法使用moveDirectory和copyDirectory,但makeDirectory或deleteDirectory工作正常,代码如下:

<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;

use App\Http\Requests;

use App\Property;

use Intervention;

class PropertyController extends Controller {

    public function update(Request $request, $id) {
        $property = Property::findOrFail($id);
        $oldName  = $property->name;

        $property->fill($request->all());
        if ($request->name == '') {
            $property->name = str_slug($request->title);
        }
        $property->updated_by = Auth::user()->username;

        if ($oldName !== $property->name) {
            Storage::disk('public')->moveDirectory('images/'.$oldName, 'images/'.$property->name);
        }
        $property->save();

        show_feedback('info', 'Property successfully updated');

        return redirect(route('property-management.index'));
    }
}

有错误:

BadMethodCallException in PluggableTrait.php line 85:
Call to undefined method League\Flysystem\Filesystem::moveDirectory

2 个答案:

答案 0 :(得分:3)

我想在$("<li>")下无法使用moveDirectory。尝试使用以下代码

首先导入文件系统

Storage
之后

创建一个新实例并移动目录。路径是相对于index.php我猜。

use Illuminate\Filesystem\Filesystem;

被修改

您可以使用方法注入绕过实例创建

$file = new Filesystem();
$file->moveDirectory('../storage/app/public/old_folder', '../storage/app/public/new_folder');

答案 1 :(得分:1)

使用File::copyDirectory()方法。

  

$ success = File :: copyDirectory($ sourceDir,$ destinationDir);

如果成功复制了所有文件和子目录,该方法将返回 true

如果目标目录不存在,则会创建它。它将根据需要递归创建。