J'ai un problème à laisser l'utilisateur créer un dossier dans laravel 4 via la méthode ajax request> route> controller @.
J'ai testé la demande de succès ajax avec la méthode url call right.
Lorsque j'utilise mkdir
ou File::mkdir($path);
(cette méthode existe-t-elle?), J'obtiendrai la réponse Failed to load resource: the server responded with a status of 500 (Internal Server Error)
et je ne parviendrai pas à créer un nouveau dossier. comment le résoudre ?
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);
});
Non, en fait c'est
File::makeDirectory($path);
Vous pouvez également essayer ceci:
$path = public_path().'/images/article/imagegallery/' . $galleryId;
File::makeDirectory($path, $mode = 0777, true, true);
pdate: En fait, cela fonctionne, mkdir
est utilisé derrière la scène. Voici la source:
/**
* 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);
}
}
Pour supprimer:
public function deleteDirectory($directory, $preserve = false);
Vérifiez la source au chemin suivant (dans votre installation locale):
root/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
Merci à l'Alpha. Votre réponse m'a aidé, voici une laravel 5 façons de le faire pour ceux qui utilisent la version ultérieure:
Storage::disk('local')->makeDirectory('path/to');
Cela va créer un répertoire dans storage/app/path/to
Récupérez le répertoire que vous venez de créer avec:
storage_path('app/path/to')
Il y a plusieurs arguments que vous pouvez utiliser.
Vous pouvez créer un répertoire en utilisant les valeurs par défaut.
$result = File::makeDirectory('/path/to/directory');
Cela retournera vrai si le répertoire a pu être créé dans le répertoire/path/to. Le mode de fichier du répertoire créé est 0777.
Vous pouvez spécifier le mode.
$result = File::makeDirectory('/path/to/directory', 0775);
Cela retournera vrai si le répertoire a pu être créé dans le répertoire/path/to. Le mode de fichier du répertoire créé sera 0775.
Vous pouvez également créer les répertoires de manière récursive.
$result = File::makeDirectory('/path/to/directory', 0775, true);