У меня есть проблема, позволяющая пользователю создавать папку в laravel 4 через ajax request> route> controller @ method.
Я проверил запрос успеха ajax на метод правильного вызова URL.
Когда я использую mkdir
или File::mkdir($path);
(существует ли этот метод?), я получу ответ Failed to load resource: the server responded with a status of 500 (Internal Server Error)
и не смог создать новую папку .. как ее решить?
route.php
Route::post('admin/article/addimagegallery', 'AdminDashboardController@addImagegallery');
AdminDashboardController
public function addImagegallery() { if (Request::ajax()) { … $galleryId = 1; // for test $path = public_path().'/images/article/imagegallery/'.$galleryId; File::mkdir($path); } }
JS
$.ajax({ url: 'addimagegallery', type: 'POST', data: {addimagegallery: 'addimagegallery'}, }) .done(function(response) { console.log(response); });
Нет, на самом деле это
File::makeDirectory($path);
Кроме того, вы можете попробовать следующее:
$path = public_path().'/images/article/imagegallery/' . $galleryId; File::makeDirectory($path, $mode = 0777, true, true);
Обновление: на самом деле это работает, mkdir
используется за сценой. Это источник:
/** * Create a directory. * * @param string $path * @param int $mode * @param bool $recursive * @param bool $force * @return bool */ public function makeDirectory($path, $mode = 0777, $recursive = false, $force = false) { if ($force) { return @mkdir($path, $mode, $recursive); } else { return mkdir($path, $mode, $recursive); } }
Для удаления:
public function deleteDirectory($directory, $preserve = false);
Проверьте источник на следующем пути (в локальной установке):
корень / продавец / Laravel / рамки / SRC / Осветите / Filesystem / Filesystem.php
Благодаря The Alpha. Ваш ответ помог мне, вот способ laravel 5 сделать это для тех, кто использует более позднюю версию:
Storage::disk('local')->makeDirectory('path/to');
Это создаст каталог в storage/app/path/to
Получить каталог, который вы только что создали, с помощью:
storage_path('app/path/to')