Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inny][Laravel] Problem z uploadowaniem zdjęć, jw
miras
post 24.07.2013, 17:33:05
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
nrm
post 24.07.2013, 17:38:30
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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();


--------------------
Go to the top of the page
+Quote Post
miras
post 24.07.2013, 17:49:55
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
memory
post 24.07.2013, 18:53:25
Post #4





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


  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.  


Ten post edytował memory 24.07.2013, 18:57:43
Go to the top of the page
+Quote Post
miras
post 24.07.2013, 20:41:15
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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


--------------------
Go to the top of the page
+Quote Post
nrm
post 24.07.2013, 21:11:16
Post #6





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
miras
post 24.07.2013, 21:14:49
Post #7





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Jak dostałem błąd to wtedy sprawdziłem wink.gif, ale teraz analizuje kod i nie mogę się niczego dopatrzeć.. hm?


--------------------
Go to the top of the page
+Quote Post
memory
post 24.07.2013, 21:22:04
Post #8





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


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

Ten post edytował memory 25.07.2013, 07:19:42
Go to the top of the page
+Quote Post
miras
post 25.07.2013, 13:06:36
Post #9





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Ehh, ten przykład mi tylko więcej namieszał niż pomógł.. teraz to już kompletnie nie mogę załapać..


--------------------
Go to the top of the page
+Quote Post
memory
post 25.07.2013, 13:24:46
Post #10





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


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


Ten post edytował memory 25.07.2013, 13:26:03
Go to the top of the page
+Quote Post
miras
post 3.08.2013, 13:57:26
Post #11





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


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;


Ten post edytował miras 3.08.2013, 15:38:10


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:34