• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

php upload zdjęć w laravelu

VPS Starter Arubacloud
0 głosów
462 wizyt
pytanie zadane 17 listopada 2018 w PHP przez Ziito Obywatel (1,110 p.)
Heja, mam taki oto problem że nie mogę uploadować zdjęć na stronę. Przy uploadzie powinien stworzyć mi się folder z avatarami i w bazie powinien być link do tego zdjęcia, a nie mam żadnego linku i nie ma żadnego folderu. W modelu mam $table->string('avatar')->nullable(); i w bazie mam NULL w tabeli avatar, a kiedy usunę te nullable to wywala mi błąd. O co może chodzić?
komentarz 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Pokaż kod odpowiedzialny za upload.
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
$user = Auth::user();
        $user->name = $request->name;       <--update danych usera
        $user->email = $request->email;

        if ($request->hasFile('avatar'))      <--upload zdjęć 
        {
            $user_avatar_path = 'public/users/' . $id . '/avatars';
            $upload_path = $request->file('avatar')->store($user_avatar_path);
            $avatar_filename = str_replace($user_avatar_path . '/','', $upload_path);
            $user->avatar = $avatar_filename;
        }

        $user->save();

 

komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
wcześniej zmieniłem $request->file('avatar') na hasFile ale i tak nie działało więc nie wiem w czym różnica?

1 odpowiedź

0 głosów
odpowiedź 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Jesteś pewien, że masz odpowiednio przygotowany formularz bądź inny sposób wysyłki i pole ma nazwę avatar? Prosty test: na końcu widocznego na fragmencie kodu warunku (za $user->avatar) wrzuć coś, aby to sprawdzić, np. dd($avatar_filename); Jeśli zamiast strony pojawi się małe okienko ze ścieżką to znaczy że się wykonuje i przy okazji możesz sprawdzić czy ścieżka jest prawidłowa. Jeśli nie to znaczy że hasFile się nie spełnia, czyli plik jakby się nie przesłał. Albo masz go wtedy pod inną nazwą w formularzu albo brakuje odpowiedniego enctype formularzowi albo nie wiem co, zależy jak go przesyłasz.
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
w ifie dodałem to dd ($avatar_filename); i nic się nie dzieje tzn to co zawsze że strona sie przeładowuje za pomocą return back();  w polu na img wyświetla mi się jego nazwa obok guzika do uploadu a gdy klikam zapisz to się przeładowuje, nazwa pliku znika i tyle, koniec i nigdzie nic nie ma.
komentarz 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Czyli nie wchodzi do tego warunku w ogóle. Masz zwykły formularz? Może pokaż jego kod, coś się musi źle wysyłać.
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
<form method="POST" action="{{url('/users/' . $user->id)}}" enctype="mutlipart/form-data">
                        {{csrf_field()}}
                        {{method_field('PATCH')}}

                        <img src="">

                         <div class="row">
                            <div class="col-sm-10 col-sm-offset-1">
                                    <input type="file" name="avatar" class="form-control">
                            </div>
                        </div>

kod html formularza

komentarz 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)

enctype to powinno być multipart/form-data, masz mutlipart :)

1
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
działa haha XD a sprawdzałem to chyba ze 20 razy :) dzięki za pomoc, tak to jest jak człowiek zmęczony siada do kodu. W bazie już jest cały link.
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)

Trochę się pośpieszyłem z zachwytem bo teraz nie wyświetla się obrazek tzn jest ta miniaturka złamanego obrazka ale jak otwieram to w nowej karcie to mam 404 i tyle. to kod wyświetlania obrazka w formularzu:

 <img src="{{ asset('storage/users' . $user->id. '/avatars' . $user->avatar) }}" class="img-responsive">

 

komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
Znów pierdoła nie dodałem w dóch miejscach / XD . dobra nie ma co idę spać :)
komentarz 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Czyli działa już wszystko? Czasem nie ma co się przemęczać, a podejść do tematu ze świeżym spojrzeniem :)
komentarz 17 listopada 2018 przez Ziito Obywatel (1,110 p.)
Tak  tak już działa wszystko :) A jeszcze tak zapytam jak się zabrać za tworzenie kart przedmiotów na stronie? robię mały sklepik internetowy tak dla siebie samego żeby się pouczyć po prostu, z tym że nie wiem za dużo o relacjach one to many itd bo zwyczajnie tego nigdy nie robiłem i nie wiem jak się za to zabrać. Ogólnie rzecz biorąc chciałbym aby admin mógł dodawać nowe kategorię i subkategorię, obrazek opis i kategorię do karty produktu oraz aby w miejscu wyświetlania się obrazka produktu mógł również dodać drugi jeśli tego wymaga dana rzecz jak np: T-shirt i kiedy kliknie strzałkę do przewinięcia obrazka dodając nowy nadpisze ten aktualnie wybrany.
komentarz 17 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Musisz sobie pomyśleć jak dokładnie ma to wyglądać. Jak masz problemy z wyobrażeniem sobie relacji możesz sobie je nawet narysować na kartce. Wszystkie kategorie umieściłbym w jednej tabeli. Subkategorie rozwiązał poprzez umieszczenie w niej kolumny w stylu parent_id - jeśli kategoria byłaby główną byłby tam null, gdyby miała jakiegoś rodzica (kategorię wyżej) to byłoby tu jej id. Jeśli produkt może mieć tylko jedną kategorię to wtedy wystarczy, że umieścisz w tabeli produktów pole category_id. Jeśli jednak może być ich wiele do jednego produktu to potrzebna będzie relacja wiele do wielu, czyli z tabelą pośrednią łączącą kategorie z produktami (prosta tabelka, nawet dwie kolumny wystarczą - id produktu i id kategorii).

Podobne pytania

0 głosów
0 odpowiedzi 211 wizyt
pytanie zadane 11 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
0 odpowiedzi 219 wizyt
pytanie zadane 16 września 2018 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)
0 głosów
2 odpowiedzi 354 wizyt
pytanie zadane 5 marca 2017 w PHP przez prymex Obywatel (1,250 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...