В настоящее время у меня проблема с 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
Я думаю, что moveDirectory
недоступен в разделе Storage
. Попробуйте использовать код ниже
сначала импортировать файловую систему
use Illuminate\Filesystem\Filesystem;
после этого создайте новый экземпляр и переместите каталог. Я думаю, что путь относительно index.php.
$file = new Filesystem(); $file->moveDirectory('../storage/app/public/old_folder', '../storage/app/public/new_folder');
отредактированный
Вы можете обойти создание экземпляра с помощью метода инъекции
public function update(Request $request,Filesystem $file, $id)
Используйте метод File::copyDirectory()
.
$ success = Файл :: copyDirectory ($ sourceDir, $ destinationDir);
Метод вернет true, если все файлы и подкаталоги успешно скопированы.
Если целевой каталог не существует, он будет создан. Он будет создан рекурсивно по мере необходимости.