Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Kohana]Upload obrazka
MateuszS
post 21.02.2013, 15:25:32
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Witam, tworzę prosty skrypt uploadu zdjęcia na serwer. Jednak ciagle wyrzuca mi bład że nie wybrałem obrazka (załacza się bład dla pola "not_empty"). Oto mój kod. Kohana 3.3

  1. //Walidacja opisu obrazka
  2. $_post = Validation::factory($_POST)
  3. ->rule("alt", "not_empty");
  4.  
  5. //Walidacja zdjęcia
  6. $_files = Validation::factory($_FILES)
  7. ->rule("image", "Upload::valid")
  8. ->rule("image", "Upload::not_empty")
  9. ->rule("image", "Upload::type", array(":value", $this->config["img_allowed_types"]));
  10.  
  11. if($_post->check() && $_files->check())
  12. {
  13. //dalsza czesc
  14. }
  15. else
  16. {
  17. //Errory walidacji pliku i opisu
  18. $errors = array_merge( $_post->errors("admin/gallery"),
  19. $_files->errors("admin/gallery")
  20. );
  21.  
  22. $this->template->content = View::factory("admin/gallery/error_add")
  23. ->set("errors", $errors);
  24. }


I formularz

  1. <?php
  2. echo form::open(null, array( 'enctype' => 'multipart/form-data' ));
  3. ?>
  4.  
  5. Opis:<br />
  6.  
  7. <?php
  8. echo form::input("alt", null, array("style" => "border: 1px solid grey; background-color: #E8E8E8; width: 350px"));
  9. ?>
  10. <br /><br />Wybierz zdjęcie:<br />
  11. <?php
  12. echo form::file("image", array("style" => "border: 1px solid grey; background-color: #E8E8E8; width: 350px"));
  13. ?>
  14.  
  15. <br />
  16.  
  17. <?php
  18. echo form::submit("submit", "Dodaj zdjęcie", array("style" => "border: 1px solid grey; background-color: #E8E8E8; width: 150px"));
  19. echo form::close();
  20. ?>


Już godzinę to męczę, nie wiem czy coś przegapiłem? Pozdrawiam


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sabat24
post 21.02.2013, 17:02:52
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Sprawdź to:

  1. Validation::factory($_FILES)
  2. ->rules('image', array (
  3. array('not_empty'),
  4. array('Upload::not_empty'),
  5. array('Upload::valid'),
  6. array('Upload::type' ,array(':value', $this->config["img_allowed_types"])),
  7. ))


I nie używaj $_POST, tylko $_post = $this->request->post();

UPDATED Sprawdź najpierw w źródle strony, czy formularz ma ustawioną metodę POST.
UPDATED 2 Wrzuciłem tę część kodu Twojego, którą zaprezentowałeś, pod moją Kohanę 3.3 i nie mam z nim problemu. Waliduje się poprawnie i bezbłędnie. Pokaż większy fragment kodu odnośnie walidacji.

Ten post edytował sabat24 21.02.2013, 17:21:59
Go to the top of the page
+Quote Post
MateuszS
post 21.02.2013, 17:38:39
Post #3





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Pierwsze co zrobiłem to sprawdziłem czy generuje dobry formularz happy.gif Generuje.

http://wklej.org/id/962149/ - akcja kontrolera.

messages/gallery.php
  1. <?php defined('SYSPATH') or die('No direct access allowed.');
  2.  
  3. return array
  4. (
  5. //Komunikaty
  6. "file_uploaded" => "Pomyślnie wysłano zdjęcie.",
  7. "file_upload_error" => "Bład przy wysyłaniu zdjęcia.",
  8. "alt_update_error" => "Zdjęcie zostało przesłane jednak wystapiły błędy przy próbie zapisania opisu",
  9.  
  10. /**
  11. * Błędy przy dodawaniu
  12. */
  13. "image" => array(
  14. "Upload::type" => "Niedozwolone rozszerzenie pliku.",
  15. "Upload::not_empty" => "Nie wybrano zdjęcia do wysłania."
  16. ),
  17.  
  18. "alt" => array(
  19. "not_empty" => "Pozostawiono puste pole (opis zdjęcia)."
  20. )
  21. );


Ten post edytował MateuszS 21.02.2013, 18:24:42


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sabat24
post 21.02.2013, 18:27:25
Post #4





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Przekleiłem kod i nadal nie mam problemów. Zdjęcie się przesyła i waliduje. Listowałeś, co zawiera zmienna $_FILES ? Może masz tam jakieś informacje o błędach?
Go to the top of the page
+Quote Post
skowron-line
post 21.02.2013, 18:32:37
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Może Ci brakuje w formularzu
  1. enctype="multipart/form-data"


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
MateuszS
post 21.02.2013, 18:33:18
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Tak listowałem. Zauważyłem że wybierając 2 różne zdjęcia o tych samych rozszerzeniach, jedno waliduje i przepuszcza a drugie już nie (wywala że nie wybrano). Oto te dwa zdjęcia (jak chcesz możesz sprawdzić u siebie czy się uploadują na moim kodzie, byłbym wdzięczny):

http://speedy.sh/z8g6p/zdj.rar

A to zdjęcie które przepuszcza się nie uploaduje. Opis jest dodawany poprawnie i wpis do bazy ale brak pliku w folderze (foldery też się tworzą poprawnie). Oto metoda w modelu:

  1. /**
  2. * Dodanie zdjęć
  3. */
  4. public function gallery_upload($file, $directory)
  5. {
  6. $array_data = array(
  7. "Image" => $file["name"]
  8. );
  9.  
  10. //Upload na serwer
  11. $upload = Upload::save($file, $file["name"], $directory);
  12.  
  13. //Wpis do bazy
  14. $query = DB::insert("parys_pictures", array_keys($array_data))
  15. ->values($array_data)
  16. ->execute();
  17.  
  18. //Ostatnie zauploadowane ID
  19. $this->last_insert_id = $query[0];
  20.  
  21. if($upload && $query)
  22. return true;
  23.  
  24. return false;
  25. }


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
sabat24
post 21.02.2013, 18:53:20
Post #7





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Jeśli masz problem ze zdjęciem: 20120715_134935.jpg, to oznacza, że jest ono zbyt duże do przesłania. Masz pewnie limit ustawiony na 3mb. Zmień sobie to lub dodaj regułę:
array('Upload::size' ,array(':value', '3M')), która nie przepuści zbyt dużych zdjęć.

Dodaj duże zdjęcie i wylistuj $_FILES. Dostaniesz pewnie błąd nr 1.

Ten post edytował sabat24 21.02.2013, 18:54:35
Go to the top of the page
+Quote Post
MateuszS
post 21.02.2013, 22:03:44
Post #8





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Ok już all śmiga thanks

Ten post edytował MateuszS 21.02.2013, 22:23:43


--------------------
O! Zimniok :P
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: 23.05.2024 - 14:51