2013-02-12 19 views
27

Sono un principiante qui, quindi scusami per questa domanda sto usando return File::put($path , $data); per creare un file nella cartella pubblica su Laravel. Ho usato questo pezzo di codice dal controller, ho bisogno di sapere il valore di $path come dovrebbe essere.Come ottenere l'elenco pubblico?

+0

stai usando laravel 3 o 4 laravel? – Laurence

+0

sto usando la versione 4 –

risposta

87

Usa public_path()

Per riferimento:

// Path to the project's root folder  
echo base_path(); 

// Path to the 'app' folder  
echo app_path();   

// Path to the 'public' folder  
echo public_path(); 

// Path to the 'storage' folder  
echo storage_path(); 

// Path to the 'storage/app' folder  
echo storage_path('app'); 
+0

Solo per aggiungere che 'public_path()' è in realtà piuttosto inutile - si presuppone che tutti i tuoi file pubblici si trovino in una directory chiamata "public" - anche se non lo sono. Ad esempio, devo sempre cambiare la directory "pubblica" predefinita in "public_html" (in linea con il mio server). Laravel non lo riconosce. Quindi non fare affidamento su questo per fare una determinazione intelligente di ciò che è effettivamente la tua directory pubblica. Sto solo usando '$ _SERVER ['DOCUMENT_ROOT'];' a meno che qualcuno non possa suggerire il motivo per cui non dovrei? – Inigo

9

È possibile utilizzare base_path() per ottenere la base della vostra applicazione - e poi basta aggiungere la cartella pubblica che:

$path = base_path().'/public'; 
return File::put($path , $data) 

Nota: Essere molto attenti a permettere alle persone di caricare i file nel vostro root di public_html. Se caricano il proprio file index.php, prenderanno il controllo del tuo sito.

+1

è base_path definito in laravel .. l'ho usato ho ricevuto questo errore Chiama alla funzione non definita base_path() –

+0

Sì - è definito in helpers.php. Ho provato la mia app L4 - funziona. Assicurati di aver eseguito l'ultima versione di L4 - potrebbe non essere stato nelle versioni precedenti. – Laurence

10

So che è un po 'tardi, ma se qualcun altro si imbatte in questo aspetto, ora puoi usare public_path(); in Laravel 4, è stato aggiunto al file helper.php nella cartella di supporto see here.

3

Il modo migliore per recuperare il percorso della cartella pubblica dal vostro config laravel è la funzione:

$myPublicFolder = public_path(); 
$savePath = $mypublicPath."enter_path_to_save"; 
$path = $savePath."filename.ext"; 
return File::put($path , $data); 

Non c'è bisogno di avere tutte le variabili, ma questo è solo per uno scopo dimostrativo.

Spero che questo aiuti, GRnGC

Problemi correlati