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ć.
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ć.
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');
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ą.
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 .
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