создать папку в laravel
У меня есть проблема, позволяющая пользователю создавать папку в 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', '[email protected]');
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);
});
Ответы
Ответ 1
Нет, на самом деле это
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
Ответ 2
Благодаря The Alpha. Ваш ответ помог мне, вот способ laravel 5 сделать это для тех, кто использует более позднюю версию:
Storage::disk('local')->makeDirectory('path/to');
Это создаст каталог в storage/app/path/to
Получить каталог, который вы только что создали, с помощью:
storage_path('app/path/to')
Ответ 3
Есть несколько аргументов, которые вы можете использовать.
Вы можете создать каталог с использованием значений по умолчанию.
$result = File::makeDirectory('/path/to/directory');
Это вернет true, если каталог был создан в каталоге /path/to. Файловый режим созданного каталога - 0777.
Вы можете указать режим.
$result = File::makeDirectory('/path/to/directory', 0775);
Это вернет true, если каталог был создан в каталоге /path/to. Режим файла созданного каталога будет 0775.
Вы также можете создавать каталоги рекурсивно.
$result = File::makeDirectory('/path/to/directory', 0775, true);