Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][Laravel]Zmiana miejsca zapisu
Forum PHP.pl > Forum > Przedszkole
Puchatek320
Cześć,
Mam 2 pytania zaczynam w laravelu i zastanawia mnie w jaki sposób można wyjść storage/app


  1. 'disks' => [
  2.  
  3. 'local' => [
  4. 'driver' => 'local',
  5. 'root' => storage_path('app'),
  6. ],
  7.  
  8. 'public' => [
  9. 'driver' => 'local',
  10. 'root' => storage_path('app/public'),
  11. 'url' => env('APP_URL').'/storage',
  12. 'visibility' => 'public',
  13. ],
  14.  
  15. 's3' => [
  16. 'driver' => 's3',
  17. 'key' => env('AWS_ACCESS_KEY_ID'),
  18. 'secret' => env('AWS_SECRET_ACCESS_KEY'),
  19. 'region' => env('AWS_DEFAULT_REGION'),
  20. 'bucket' => env('AWS_BUCKET'),
  21. 'endpoint' => env('AWS_URL'),
  22. ],
  23.  
  24. ],
  25.  
  26. 'out' => [
  27.  
  28. 'localfile' => [
  29. 'driver' => 'local',
  30. 'root' => storage_path('../../'),
  31. ],
  32.  
  33. 'publicfile' => [
  34. 'driver' => 'local',
  35. 'root' => storage_path('filmy'),
  36. 'url' => env('APP_URL').'../../filmy/',
  37. 'visibility' => 'public',
  38. ],
  39.  
  40. 's3' => [
  41. 'driver' => 's3',
  42. 'key' => env('AWS_ACCESS_KEY_ID'),
  43. 'secret' => env('AWS_SECRET_ACCESS_KEY'),
  44. 'region' => env('AWS_DEFAULT_REGION'),
  45. 'bucket' => env('AWS_BUCKET'),
  46. 'endpoint' => env('AWS_URL'),
  47. ],
  48.  
  49. ],


  1. public function save(Request $request){
  2.  
  3. $path = $request->file('filename')->store('publicfile');
  4. return $path;
  5.  
  6. }


próbowałem z out ale coś źle robię, potrzebuje zapisać plik z formularza po za folderem strony obecnie zapisuje mi w strona/storage/app a chciałbym filmy/

mam jeszcze pytanie odnośnie blade a mianowicie w blade mam coś takiego:

  1. <select class="browser-default custom-select col-sm-5" name="katalog">
  2. <option></option>;
  3. <?php if ($handle = opendir('../filmy/')) {
  4. while (false !== ($file = readdir($handle))) {
  5. if ($file != "." && $file != "..") {
  6. echo "<option>".$file."</option>";
  7. }
  8. }
  9. closedir($handle);}?></select>


domyslam się że taką funkcję powinno się gdzieś implementować dobrze myślę? jeśli tak to w jaki sposób

Ktoś coś?
viking
APP_URL to adres domeny więc co ma dać adres np http://lolo.dev/../../filmy? Storage ma iteratory do listowania plików w katalogach.
Puchatek320
strona jest na localhost xampp i chciałbym aby pliki zapisywały się w folderze filmy a nie laravel/storage/ czyli chciałbym się cofnąć 2 foldery w tył aby moc zapisać w folderze filmy
viking
To dlaczego zmieniasz publiczny url a nie root? Co to jest za klucz out?
Puchatek320
Chciałem aby tylko dane z formularza laravel zapisywał w tym folderze a resztę w storage czyli jakieś logi itp wiec pomyślałem iż użyję zrobię klasę out tak żeby odnieść się tylko do formularza ale źle chyba myślę :/
viking
A czytałeś troszkę dokumentację? Masz zdublować istniejącą sekcję public, zmienić jej nazwę na np movies i dopasować ścieżki albo dopasować pod siebie całą konfigurację w filesystems.php
Puchatek320
Okey,

'local' => [
'driver' => 'local',
'root' => storage_path('../../filmy/'),
],

'videos' => [
'driver' => 'local',
'root' => storage_path('videos'),
],
[/php]

zminiłem sobie to i wszystko fajnie ale nie mogę odwołać się do pliku żeby go wyświetlić?

próbuje to zrobić echo "<img src='122.png'></img>"; mimo że plik istnieje w folderze filmy to nie wyświetla się nie wiedzieć czemu....
viking
A apache ma dostęp do tego folderu (DocumentRoot)? Czy tak sobie losowo wgrałeś? Dwa wyżej nad storage to jest (przy domyślnej strukturze) poza folderem projektu.
Puchatek320
Tak,

było tak

strona->laravel->storage->app

  1. 'local' => [
  2. 'driver' => 'local',
  3. 'root' => storage_path('../../filmy/'),
  4. ],
  5.  
  6. 'videos' => [
  7. 'driver' => 'local',
  8. 'root' => storage_path('videos'),
  9. ],


a jest tak

strona->filmy->122.png

próbuje zrobić echo "<img src='122.png' ></img>";
ale nie rozumiem dlaczego zdjęcie nie jest wyświetlane czy ja coś źle rozumiem?

DocumentRoot -> strona, jeśli robię zapis pliku z formularza do tego folderu to nie ma problemu żadnego z tym wszystko działa ok.

Jeśli zrobię <img src='../../filmy/122.png' ></img>" to zdjęcie się pojawia tylko dlaczego za każdym razem muszę się cofać skoro folder jest skonfigurowany na stałe?
viking
Jak ręcznie podajesz ścieżki. https://laravel.com/docs/7.x/helpers#method-asset
Puchatek320
Nie rozumiem jak zrobić url z forma

mam

  1.  
  2. 'local' => [
  3. 'driver' => 'local',
  4. 'root' => storage_path('../../filmy/'),
  5. ],
  6.  
  7. 'save_video' => [
  8. 'driver' => 'local',
  9. 'root' => storage_path('filmy/'),
  10. 'url' => env('APP_URL').'/filmy',
  11. ],
  12.  
  13.  
  14.  
  15.  
  16. $ur = $request->file('file')->store($katalog);
  17. $url = '../../'.$ur.'';
  18.  
  19. Storage::disk('save_video')->put($ur, ''.$file.''); //save file from form

Wyjaśnisz w jaki sposób zrobić url tak żebym nie musiał kombinować z "../../" tylko to jakoś na stałe przypisać żebym wpisywał tylko folder i nazwę pliku?
viking
Zacznij czytać dokumentację https://laravel.com/docs/7.x/filesystem#file-urls
Puchatek320
URL Host Customization

  1. 'save_video' => [
  2. 'driver' => 'local',
  3. 'root' => storage_path('filmy/'),
  4. 'url' => env('APP_URL').'../../filmy/',
  5. 'visibility' => 'public',
  6. ],
  7.  
  8.  
  9. $urle = Storage::url('test/1.jpg');
  10. return $urle;


według tego co piszę powino zwrócić filmy/test/1.mp4 a zwraca /storage/test/1.jpg czy ja coś źle rozumiem?
viking
Storage::disk()->url()
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.