Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Laravel] Problem z uploadowaniem zdjęć
Forum PHP.pl > Forum > PHP > Frameworki
miras
Witam, korzystając z tego tutoriala http://maxoffsky.com/code-blog/howto-ajax-...oad-in-laravel/ zrobiłem uploadowanie zdjęć i wszystko pięknie działa, pojawia się problem gdy potrzebuję wyciągnąć z tej funkcji nazwy plików i ich rozszerzenia, które zostały zuploadowane

funkcja:

  1. function post_upload(){
  2.  
  3. $input = Input::all();
  4. $rules = array(
  5. 'file' => 'image|max:3000',
  6. );
  7.  
  8. $validation = Validator::make($input, $rules);
  9.  
  10. if ($validation->fails())
  11. {
  12. return Response::make($validation->errors->first(), 400);
  13. }
  14.  
  15. $file = Input::file('file');
  16.  
  17. $extension = File::extension($file['name']);
  18. $directory = path('public').'images/';
  19. $filename = substr(sha1(time().time()),4).".{$extension}";
  20. Input::upload('file', $directory, $filename);
  21.  
  22. return $filename;
  23.  
  24. }



i wykonanie:

  1. $zdj = Array();
  2. $zdj=$zdj.":".post_upload();
  3.  
  4. return $zdj;


zwraca mi nazwę tylko jednego pliku (z kropką na końcu BEZ rozszerzenia...) ma ktoś jakiś pomysł jak to rozwiązać? muszę zapisywać zuploadowane pliki do bazy, żeby wiedzieć, co później wyświetlać. Ten dwukropek pomiędzy nazwami dałem dlatego, żeby później móc rozdzielić ciąg znaków z bazy (explode)..
nrm
Trochę od innej strony - ale napisałeś "muszę zapisywać zuploadowane pliki do bazy, żeby wiedzieć, co później wyświetlać.". Nieprawda. W bazie wystarczy jakieś ID/hash/data dzięki któremu trafisz do pliku img uprzednio zmieniając mu nazwę.

Input::file('photo')->move($destinationPath, $fileName);

$name = Input::file('photo')->getClientOriginalName();
miras
kurcze, nie do końca rozumiem...

  1. function post_upload(){
  2.  
  3. $input = Input::all();
  4. $rules = array(
  5. 'file' => 'image|max:3000',
  6. );
  7.  
  8. $validation = Validator::make($input, $rules);
  9.  
  10. if ($validation->fails())
  11. {
  12. return Response::make($validation->errors->first(), 400);
  13. }
  14.  
  15. $file = Input::file('file');
  16.  
  17. $extension = File::extension($file['name']);
  18. $directory = path('public').'images/';
  19. $filename = substr(sha1(time().time()),4).".{$extension}";
  20. Input::upload('file', $directory, $filename);
  21.  
  22. return Input::file('file')->getClientOriginalName();
  23.  
  24. }
  25.  


mam taki błąd:
Call to a member function getClientOriginalName() on a non-object

dodam, że zdjęcia się przesyłają, wszystko działa potrzebuję pobrać tylko nazwę pliku i rozszerzenie...
memory
  1.  
  2.  
  3. $this->file = Input::file('file');
  4.  
  5. $this->filename = uniqid();
  6. $this->fullname = $this->filename . '.' . $this->file->guessClientExtension();
  7. $this->file->guessClientExtension(); // ext
  8. $this->file->getSize(); //size
  9. $this->file->getClientOriginalName() // orginalna nazwa
  10.  
  11.  
  12. try
  13. {
  14. $this->file->move(\Config::get('cms.image_upload') . $path, $this->fullname);
  15.  
  16. return $this->filename;
  17. } catch (FileException $e)
  18. {
  19. $this->error = $e->getMessage();
  20.  
  21. }
  22. }
  23.  
miras
jednak nie śmiga..

Błąd: Using $this when not in object context

  1.  
  2. function post_upload(){
  3.  
  4. $input = Input::all();
  5. $rules = array(
  6. 'file' => 'image|max:3000',
  7. );
  8.  
  9. $validation = Validator::make($input, $rules);
  10.  
  11. if ($validation->fails())
  12. {
  13. return Response::make($validation->errors->first(), 400);
  14. }
  15.  
  16. $this->file = Input::file('file'); // parser tutaj pokazuje błąd
  17.  
  18. $this->filename = uniqid();
  19. $this->fullname = $this->filename . '.' . $this->file->guessClientExtension();
  20. $this->file->guessClientExtension(); // ext
  21. $this->file->getSize(); //size
  22. $this->file->getClientOriginalName(); // orginalna nazwa
  23.  
  24.  
  25. try
  26. {
  27. $this->file->move(\Config::get('cms.image_upload') . $path, $this->fullname);
  28.  
  29. return $this->filename;
  30. } catch (FileException $e)
  31. {
  32. $this->error = $e->getMessage();
  33.  
  34. }
  35. }
nrm
Mirasie, imienniku, a Ty w ogóle sprawdzasz co zawierają te zmienne i jakiego są typu czy tak na pałę wklepujesz i "nie działa"? wink.gif
miras
Jak dostałem błąd to wtedy sprawdziłem wink.gif, ale teraz analizuje kod i nie mogę się niczego dopatrzeć.. hm?
memory
kolego podałem tylko przykład a nie kopiuj wklej smile.gif. post_upload() nie jest czasem statyczna metodą. W sumie nrm podał ci odpowiedz
miras
Ehh, ten przykład mi tylko więcej namieszał niż pomógł.. teraz to już kompletnie nie mogę załapać..
memory
w czym jest problem ?


  1.  
  2.  
  3. $file = Input::file('file'); // pobierasz plik daj var_dump spr czy masz dane
  4. $filename = uniqid(); // unklana nazwa
  5. $fullname = $filename . '.' . $file->guessClientExtension(); // pelna nazwa
  6. $file->guessClientExtension(); // ext
  7. $file->getSize(); //size
  8. $file->getClientOriginalName(); // orginalna nazwa
  9. $directory = path('public').'images/'; // twoj folder
  10.  
  11. try
  12. {
  13. $file->move($directory, $fullname);
  14.  
  15. return $file->getClientOriginalName(); // wyswietlasz orginalna nazwa
  16. } catch (FileException $e)
  17. {
  18. $error = $e->getMessage();
  19.  
  20. }
miras
Dobra, poradziłem sobie z tym w inny sposób, już mam nazwę pliku itp. teraz problem się pojawia gdy ktoś zuploaduje kilka zdjęć wtedy dostaję tylko nazwę jednego, jak to rozwiązać?

Funkcja:

  1. function post_upload(){
  2.  
  3. $input = Input::all();
  4. $rules = array(
  5. 'file' => 'image|max:3000',
  6. );
  7.  
  8. $validation = Validator::make($input, $rules);
  9.  
  10. if ($validation->fails())
  11. {
  12. return Response::make($validation->errors->first(), 400);
  13. }
  14.  
  15. $file = Input::file('file');
  16.  
  17. // $extension = File::extension($file['name']);
  18. $directory = path('public').'images/';
  19. $filename = md5(date("d-m-Y-H-i-s")).".png";
  20. Input::upload('file', $directory, $filename);
  21.  
  22. return date("d-m-Y-H-i-s");
  23.  
  24. }


wykonanie

  1. $zdj = Array();
  2. $zdj=$zdj.":".post_upload();
  3.  
  4. return $zdj;
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.