usuwanie zdjęć z serwera w laravelu

0

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?

1

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).

0

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

1

tzn, podaję złą ścieżkę do pliku?

Najwyraźniej.
Ew. nie masz praw do usuwania plików z tego katalogu - debuguj ;-)

asset improwizowałem, jak nie działało

Programowanie nie polega na zgadywaniu: https://en.wikipedia.org/wiki/Programming_by_permutation

0

Jak powinna wyglądać ścieżka zakładając że zdjęcie jest w folderze public/images a kod w kontrolerze?

0

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.

0

A jak już zapisuję pliki w katalogu storage/app to w jaki sposób mogę je wyświetlić na stronie?

0

Nie przeczytałeś dokumentacji, prawda?
https://laravel.com/docs/5.6/filesystem

0

wykonuję polecenia php artisan storage:link następnie chcę wyświetlić plik <img src="{{asset('storage/app/photo.jpg')"/> jednak nie działa

0

photo.jpg umieszczasz w /storage/public/photo.jpg, a dostęp masz poprzez asset('storage/photo.jpg') - tak robisz?

0

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?

0

$request->file('image')->storeAs('costam.jpg')?

0

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

0

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ć :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1