Jestem tu początkującym, więc wybacz mi za to pytanie, którego używam return File::put($path , $data);
do tworzenia pliku w folderze publicznym na Laravel. Użyłem tego fragmentu kodu z kontrolera, muszę znać wartość, $path
jak powinno być.
90
Odpowiedzi:
Posługiwać się
public_path()
Na przykład:
// 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');
źródło
public_path()
jest to całkiem bezużyteczne - zakłada po prostu, że wszystkie twoje pliki publiczne znajdują się w katalogu o nazwie „public” - nawet jeśli nie są. Na przykład, zawsze muszę zmieniać domyślny katalog „public” na „public_html” (zgodnie z moim serwerem). Laravel tego nie rozpoznaje. Więc nie polegaj na tym, aby w inteligentny sposób określić, jaki jest twój katalog publiczny. Po prostu używam,$_SERVER['DOCUMENT_ROOT'];
chyba że ktoś może zasugerować, dlaczego nie powinienem?Możesz użyć base_path (), aby uzyskać podstawę swojej aplikacji - a następnie po prostu dodaj do tego swój folder publiczny:
$path = base_path().'/public'; return File::put($path , $data)
Uwaga: bądź bardzo ostrożny, pozwalając ludziom przesyłać pliki do Twojego katalogu głównego public_html. Jeśli prześlą własny plik index.php, przejmą kontrolę nad Twoją witryną.
źródło
Wiem, że jest trochę za późno, ale jeśli ktoś inny natrafi na ten wygląd, możesz teraz użyć public_path (); w Laravel 4 został dodany do pliku helper.php w folderze wsparcia patrz tutaj .
źródło
Najlepszym sposobem na odzyskanie ścieżki do folderu publicznego z konfiguracji Laravel jest funkcja:
$myPublicFolder = public_path(); $savePath = $mypublicPath."enter_path_to_save"; $path = $savePath."filename.ext"; return File::put($path , $data);
Nie ma potrzeby posiadania wszystkich zmiennych, ale służy to tylko celom demonstracyjnym.
Mam nadzieję, że to pomoże, GRnGC
źródło