Witam, chciałbym usunąć zdjęcie z serwera, robię coś takiego jednak to nie działa :
Storage::delete(asset('photo.jpg'));
ma ktoś pomysł jak to powinno wyglądać żeby działało?
usuwanie zdjęć z serwera w laravelu
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
asset powinieneś wykorzystywać, gdy chcesz pobrać adres pliku do pobrania (z punktu widzenia użytkownika).
Storage::delete przyjmuje dane do lokalizacji pliku w katalogu storage/app (bądź podobnie - zależnie od konfiguracji).
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
ale jeśli zrobię tak: Storage::delete('photo.jpg'); też nie działa, czy to wina ścieżki? tzn, podaję złą ścieżkę do pliku?
p.s z asset improwizowałem, jak nie działało :D
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
tzn, podaję złą ścieżkę do pliku?
Najwyraźniej.
Ew. nie masz praw do usuwania plików z tego katalogu - debuguj ;-)
assetimprowizowałem, jak nie działało
Programowanie nie polega na zgadywaniu: https://en.wikipedia.org/wiki/Programming_by_permutation
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
Jak powinna wyglądać ścieżka zakładając że zdjęcie jest w folderze public/images a kod w kontrolerze?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
Storage::delete usuwa dane, jak sama nazwa fasady brzmi, domyślnie z katalogu storage.
Jeśli chcesz usuwać dane z innych katalogów, musiałbyś albo spróbować zrobić Storage::delete('../../public/foo'), lub dodać nowy dysk w ustawieniach wskazujący na katalog public, a nie storage, i do niego się odwoływać.
Przy czym nie jest to prawidłowe podejście - prawidłowo powinieneś modyfikować wyłącznie pliki z katalogu storage, a w public mieć symlinka do storage.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
A jak już zapisuję pliki w katalogu storage/app to w jaki sposób mogę je wyświetlić na stronie?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
Nie przeczytałeś dokumentacji, prawda?
https://laravel.com/docs/5.6/filesystem
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
wykonuję polecenia php artisan storage:link następnie chcę wyświetlić plik <img src="{{asset('storage/app/photo.jpg')"/> jednak nie działa
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
photo.jpg umieszczasz w /storage/public/photo.jpg, a dostęp masz poprzez asset('storage/photo.jpg') - tak robisz?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
Teraz działa, dzięki. Teraz dodawanie. Jeśli dodaję pliki w ten sposób $image = Storage::putFile('public', $request -> file('image'')); zdjęcie trafia do katalogu public jednak link jaki trafia do bazy wygląda tak: public/hnlbC4d0HTTGKqDGf91xaYeZ3AAbG8XgCykHj47c.jpeg na początku ścieżki jest nazwa katalogu publici nie można tego wyświetlić asset('storage/photo.jpg') ponieważ jest błędna ścieżka. Jak dodawać te zdjęcia do katalogu publicjednak``` w taki sposób żeby nie było nazwy katalogu w ścieżce do bazy?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
$request->file('image')->storeAs('costam.jpg')?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 362
No dobra, to wiem ale co jeśli rozszerzenie będzie inne? Chodzi mi o to żeby to działało z automatu
mam taki kod
$name = ....
$photo = Storage::putFileAs('public', $request -> file('photo'), $name
);
no i jak wygenerować tą nazwę?
Normalnie to zrobiłbym to tak $name = time(); no ale wtedy nie będzie rozszerzenia
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 213
Przeczytaj raz jeszcze z uwagą dokumentacje bo tam jest wszystko bardzo prosto opisane, a nawet przytoczone są przykłady do wszystkiego.
Zresztą linki do fotek najczęściej gdzieś zapisujesz w bazie danych, więc czy to będzie photo.jpg czy zczxcxzcxzczxcxz.jpg to jak z bazy to pociągniesz to jest Ci obojętne jak wygląda nazwa.
Jak chcesz mieć konkretną nazwę to Patryk pokazał Ci storeAs(). Chcesz rozszerzenie pliku? masz np getClientOriginalExtension().
Laravel ma naprawde fajną dokumentacje, wystarczy poczytać :)