Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload zdjęć
Forum PHP.pl > Forum > Przedszkole
greg.paw.90
Witam serdecznie,
piszę do Was z prośbą o pomoc w rozwiązaniu problemu odnośnie skryptu, który wysyła pliki przy pomocy formularza na serwer.
Problem polega na tym, iż skrypt działa prawidłowo pod Mozilla Firefox, natomiast pod Internet Explorer coś "nie łapie", tzn wywala zawsze błąd - nieprawidłowy format.
Oto skrypt:
  1. if (isset($_POST['dodaj'])){
  2. $nazwa = $_POST['nazwa'];
  3. $nazwa = strtolower($nazwa);
  4. $nazwa = str_replace(" ","_",$nazwa);
  5. $nazwa = str_replace("+","_",$nazwa);
  6. $nazwa = str_replace("%","_",$nazwa);
  7. $nazwa = str_replace("&","_",$nazwa);
  8. $nazwa = str_replace("$","_",$nazwa);
  9. $nazwa = str_replace("!","_",$nazwa);
  10. $nazwa = str_replace("#","_",$nazwa);
  11. $nazwa = str_replace("@","_",$nazwa);
  12. $nazwa = str_replace("^","_",$nazwa);
  13. $wys = $_POST['wys'];
  14. $szer = $_POST['szer'];
  15. if(!empty($_POST['src_foto']) && $_FILES["src_foto"]["type"] == "image/pjpeg" || $_FILES["src_foto"]["type"] == "image/jpeg" || $_FILES["src_foto"]["type"] == "image/JPG"){
  16. if( is_uploaded_file( $_FILES['src_foto']['tmp_name'] ) )
  17. {
  18. $plik = '../Image/temp_'. $nazwa.'.jpg';
  19. if( move_uploaded_file( $_FILES['src_foto']['tmp_name'], $plik ) )
  20. {
  21. $src = imagecreatefromjpeg($plik);
  22. $size = @getimagesize($plik);
  23. $width = $size[0];
  24. $height = $size[1];
  25. $max_width = $szer;
  26. $max_height= $wys;
  27. $color = imagecreatetruecolor($max_width, $max_height);
  28. imagecopyresampled($color, $src, 0, 0, 0, 0, $max_width, $max_height, $width, $height);
  29. imagejpeg($color, "../Image/".$nazwa.".jpg", 90);
  30. $usun='../Image/temp_'. $nazwa.'.jpg';
  31. unlink($usun);
  32. echo 'Obraz został wgrany! <a href="java script:zdjecie('."'".'../Image/'.$nazwa.'.jpg'."'".')">Kliknij tutaj aby go zobaczyć</a>';
  33. }
  34. else{
  35. echo 'Błąd podczas przesyłania pliku!';
  36. }
  37. }
  38. else{
  39. echo 'Błąd podczas przesyłania pliku!';
  40. }
  41. }
  42. else{
  43. echo 'Nieprawidłowy foramt pliku!';
  44. }
  45. }
  46. else{
  47. echo '<form method="post" enctype="multipart/form-data">Wybierz plik ze zdjęciem <small>(max. 2000kb; format .jpg lub .JPG)</small> <input type="file" name="src_foto" size="29" /><input type="hidden" name="MAX_FILE_SIZE" value="2100000" /><br>
  48. Nazwa pliku <small>(max. 10znaków)</small> <input type="text" name="nazwa" size="10" maxlength="10"><br>
  49. Wysokość <input type="text" name="wys" size="2" maxlength="4">px<br>
  50. Szerokość <input type="text" name="szer" size="2" maxlength="4">px<br><br>';
  51. echo '<input type="submit" class="submit" name="dodaj" value="DODAJ ZDJĘCIE"></form>';
  52. }


Prosiłbym o jakieś rady co może być nie tak.

Pozdrawiam
Blame
Nie jestem pewien ale chyba pole type w tablice $_FILES jest zależne od przeglądarki. Co możesz zrobić:
1. Echo na $_FILES["src_foto"]["type"] i sprawdzenie co się pod tym kryje w IE.
2. Zmiana skryptu tak aby rozszerzenie uzyskać za pomocą funkcji pathinfo.
erix
Sformatuj ten kod, jak należy, bo łączenie klamr na czuja w listingu bez wcięć, to strzelanie sobie w stopę.
greg.paw.90
Dziękuje za odpowiedzi/podpowiedzi smile.gif

Już sobie poradziłem okazało się, że funkcja empty() nie działa tak jak powinna na IE w przypadku przesyłu obrazów

  1. if($_POST['src_foto']!=' ' && $_FILES["src_foto"]["type"] == "image/pjpeg" || $_FILES["src_foto"]["type"] == "image/jpg" || $_FILES["src_foto"]["type"] == "image/jpeg" || $_FILES["src_foto"]["type"] == "image/JPG"){


Tak jak zrobiłem to działa.

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