2014-02-19 21 views
11

Ich habe Problem lassen Benutzer erstellen Ordner in Laravel 4 durch Ajax Anfrage> Route> Controller @ Methode.
Ich habe Ajax-Erfolgsanfrage an die Url Call Right-Methode getestet.
Wenn ich mkdir oder File::mkdir($path); verwenden (ist diese Methode vorhanden?), Bekomme ich die Antwort Failed to load resource: the server responded with a status of 500 (Internal Server Error) und scheitern, neuen Ordner zu erstellen .. wie man es löst?Ordner in Laravel erstellen

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); 
}); 
+0

Sie könnten auch in diesem http://stackoverflow.com/questions/30682421/how-to-protect-image-from-public-view-in-laravel-5/30682456#30682456 wo Sie Ihre interessieren Bilder in bereits beschreibbaren Ordner. –

Antwort

33

Nein, es ist eigentlich

File::makeDirectory($path); 

Auch können Sie dies versuchen:

$path = public_path().'/images/article/imagegallery/' . $galleryId; 
File::makeDirectory($path, $mode = 0777, true, true); 

Update: Eigentlich funktioniert es, mkdir verwendet hinter der Szene wird. Dies ist die Quelle:

/** 
* 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); 
    } 
} 

Zum Löschen:

public function deleteDirectory($directory, $preserve = false); 

die Quelle Einchecken im Weg folgt (in Ihrer lokalen Installation):

root/Verkäufer/Laravel/Rahmen /src/Illuminate/Filesystem/Filesystem.php

+0

wow Vielen Dank !! funktioniert basic php 'mkdir' nicht mit laravel ?? und wie man Ordner löscht? Ich kann das Dokument in Laravel nicht finden – user1775888

+1

Vielen Dank! Link ist 404, aber ich finde das "https: // github.com/Laravel/Framework/Blob/Master/src/Illuminate/Dateisystem/Filesystem.php" – user1775888

+1

@ user1775888: http://laravel.com/api/class- Illuminate.Filesystem.Filesystem.html – kba

3

Dank der Alpha. Ihre Antwort hat mir geholfen, hier ist ein Laravel 5 so, wie es für diejenigen, die die spätere Version verwenden zu tun:

Storage::disk('local')->makeDirectory('path/to'); 

Dieses ein Verzeichnis in storage/app/path/to

das Verzeichnis abrufen erstellen werden Sie nur mit erstellt:

storage_path('app/path/to') 
+0

Wissen Sie warum, wenn das neue Verzeichnis auf kyrillisch geschrieben wird, im Verzeichnis der Name des Verzeichnisses wie folgt aussieht: РђРґР »Р» – Alex

+0

@Alex Wahrscheinlich wegen der Schriftart und/oder Kodierung Probleme. Etwas in der Art von http://unix.stackexchange.com/questions/16771/foreign-characters-wont-display-in-ssh/16784 –

Verwandte Themen