Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Skrypt działa niepoprawnie, upload zdjęć
Forum PHP.pl > Forum > Przedszkole
Majzel
W poniższym kodzie działa jedynie zmniejszanie obrazku i zapisanie go do folderu, niestety to co jest już dalej w kodzie nie działa, nie wiem czemu, wyświetla tylko link:
http://localhost/webkns.unl.pl/upload/upload.php

  1. <?php
  2. if (!isset($_POST['submit'])) {
  3. echo '<form enctype="multipart/form-data" action="upload.php" method="POST">
  4. <input type="hidden" name="MAX_FILE_SIZE" value="5000000000000000" />
  5. Podaj ścieżkę grafiki: <input name="plik" type="file" />
  6. <input type="submit" value="Wyslij plik" name="submit" /><br />
  7. Obsługiwane formaty graficzne: .jpeg, .gif, .tiff, .png<br />
  8. <input type="radio" name="rozmiar" value="640x480" />Rozmiar 640x480 <br />
  9. <input type="radio" name="rozmiar" value="800x600" />Rozmiar 800x600<br />
  10. </form>
  11. </div>';
  12. }   ?>
  13. <?php
  14. $plik_tmp = $_FILES['plik']['tmp_name'];
  15. $plik_nazwa = $_FILES['plik']['name'];
  16. $plik_rozmiar = $_FILES['plik']['size'];
  17. $dokladny_typ = $_FILES['plik']['type'];
  18. echo $plik_nazwa;
  19. $format_pliku = explode(".",$plik_nazwa);
  20. //echo $format_pliku[1].'<br />';
  21. //if ($format_pliku[1] == "txt" || $format_pliku == "jpg") {
  22. //if (end($format_pliku) == "txt" || end($format_pliku) == "jpg")
  23.  
  24. if ($dokladny_typ == "image/jpeg" || $dokladny_typ == "image/gif" || $dokladny_typ == "image/tiff" || $dokladny_typ == "image/png" ) {
  25. if(is_uploaded_file($plik_tmp)) {
  26.     /*zmniejszanie do ustalonego rozmiaru */
  27.  
  28. header('Content-type: image/jpeg');
  29.  
  30.  
  31. list($width, $height) = getimagesize($plik_tmp);
  32. $new_width = 640;
  33. $new_height = 480;
  34.  
  35.  
  36. $image_p = imagecreatetruecolor($new_width, $new_height);
  37. $image = imagecreatefromjpeg($plik_tmp);
  38. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  39.  
  40.  
  41. imagejpeg($image_p, NULL, 100);
  42. imagejpeg($image_p, "cos.jpg", 100);
  43.   /* KONIEC zmniejszanie do ustalonego rozmiaru */
  44.      move_uploaded_file($plik_tmp, "c:/wamp/www/webkns.unl.pl/upload/$plik_nazwa");
  45. ?>
  46. <img src="<?php echo $plik_nazwa ?>" /><br />
  47. <a href="<?php echo $plik_nazwa ?>">Klik</a>      <br><br><br>
  48. <?php
  49.  
  50.  
  51.  
  52.   echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  53.    <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  54.    $wielkosc = getimagesize($plik_nazwa);
  55.    echo '<br />Rozmiar: ';
  56.    if(isset($_POST['rozmiar'])) {
  57.    $rozmiar = $_POST['rozmiar'];
  58.    echo $rozmiar;
  59.    }
  60. ?>
  61.  
  62. <?php     if ($_FILES['plik']['error'] > 0)
  63.    {
  64.        switch($_FILES['plik']['error'])
  65.        {
  66.            case 1: echo 'Rozmiar pliku jset większy niż możliwe to w konfiguracji!'; break;
  67.            case 2: echo 'Rozmiar pliku jest zbyt duży!'; break;
  68.            case 3: echo 'Plik wysłany tylko częściowo!'; break;
  69.            case 4: echo 'Nie wysłano żadnego pliku!'; break;
  70.        }
  71.    }
  72.                                }
  73.    else {
  74.    echo 'niewlasciwy format pliku';
  75.    }
  76. }
  77. ?>
Spawnm
i zero komunikatów o błędzie?

  1. <?php
  2. echo $plik_nazwa;
  3. //...
  4. header('Content-type: image/jpeg');
  5. ?>


header deklaruje się przed wyświetleniem wiadomości/html


jak deklarujesz typ image to nie dajesz echo .
Majzel
dzięki, zedytowałem to jednak dalej nie działa, efekt taki sam, jeżeli przesunę header nad linijkę:
  1. <?php
  2. list($width, $height) = getimagesize($plik_tmp);
  3. ?>

to wtedy wyświetla obrazek i zapisuje jednak tylko to wykonuje i nic więcej, zero dodatkowych echów itp.
więc nie wiem nie mam pomysłu co by tu zmienić jeszcze żeby to chodziło dobrze:
  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. if (!isset($_POST['submit'])) {
  5. echo '<form enctype="multipart/form-data" action="upload.php" method="POST">
  6. <input type="hidden" name="MAX_FILE_SIZE" value="5000000000000000" />
  7. Podaj ścieżkę grafiki: <input name="plik" type="file" />
  8. <input type="submit" value="Wyslij plik" name="submit" /><br />
  9. Obsługiwane formaty graficzne: .jpeg, .gif, .tiff, .png<br />
  10. <input type="radio" name="rozmiar" value="640x480" />Rozmiar 640x480 <br />
  11. <input type="radio" name="rozmiar" value="800x600" />Rozmiar 800x600<br />
  12. </form>
  13. </div>';
  14. }   ?>
  15. <?php
  16. $plik_tmp = $_FILES['plik']['tmp_name'];
  17. $plik_nazwa = $_FILES['plik']['name'];
  18. $plik_rozmiar = $_FILES['plik']['size'];
  19. $dokladny_typ = $_FILES['plik']['type'];
  20. $format_pliku = explode(".",$plik_nazwa);
  21. //echo $format_pliku[1].'<br />';
  22. //if ($format_pliku[1] == "txt" || $format_pliku == "jpg") {
  23. //if (end($format_pliku) == "txt" || end($format_pliku) == "jpg")
  24.  
  25. if ($dokladny_typ == "image/jpeg" || $dokladny_typ == "image/gif" || $dokladny_typ == "image/tiff" || $dokladny_typ == "image/png" ) {
  26. if(is_uploaded_file($plik_tmp)) {
  27.     /*zmniejszanie do ustalonego rozmiaru */
  28.  
  29.  
  30.  
  31. list($width, $height) = getimagesize($plik_tmp);
  32. $new_width = 640;
  33. $new_height = 480;
  34.  
  35.  
  36. $image_p = imagecreatetruecolor($new_width, $new_height);
  37. $image = imagecreatefromjpeg($plik_tmp);
  38. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  39.  
  40.  
  41. imagejpeg($image_p, NULL, 100);
  42. imagejpeg($image_p, "cos.jpg", 100);
  43.   /* KONIEC zmniejszanie do ustalonego rozmiaru */
  44. //     move_uploaded_file($plik_tmp, "c:/wamp/www/webkns.unl.pl/upload/$plik_nazwa");
  45. ?>
  46. <img src="<?php echo $plik_nazwa ?>" /><br />
  47. <a href="<?php echo $plik_nazwa ?>">Klik</a>      <br><br><br>
  48. <?php
  49.  
  50.  
  51.  
  52.   echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  53.    <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  54.    $wielkosc = getimagesize($plik_nazwa);
  55.    echo '<br />Rozmiar: ';
  56.    if(isset($_POST['rozmiar'])) {
  57.    $rozmiar = $_POST['rozmiar'];
  58.    echo $rozmiar;
  59.    }
  60. ?>
  61.  
  62. <?php     if ($_FILES['plik']['error'] > 0)
  63.    {
  64.        switch($_FILES['plik']['error'])
  65.        {
  66.            case 1: echo 'Rozmiar pliku jset większy niż możliwe to w konfiguracji!'; break;
  67.            case 2: echo 'Rozmiar pliku jest zbyt duży!'; break;
  68.            case 3: echo 'Plik wysłany tylko częściowo!'; break;
  69.            case 4: echo 'Nie wysłano żadnego pliku!'; break;
  70.        }
  71.    }
  72.                                }
  73.    else {
  74.    echo 'niewlasciwy format pliku';
  75.    }
  76. }
  77.  
  78. ?>
Spawnm
a więc:
  1. <?php
  2. header('Content-type: image/jpeg');
  3.  
  4. if (!isset($_POST['submit'])) {
  5. echo '<form enctype="multipart/form-data" action="upload.php" method="POST">
  6. <input type="hidden" name="MAX_FILE_SIZE" value="5000000000000000" />
  7. Podaj ścieżkę grafiki: <input name="plik" type="file" />
  8. <input type="submit" value="Wyslij plik" name="submit" /><br />
  9. Obsługiwane formaty graficzne: .jpeg, .gif, .tiff, .png<br />
  10. <input type="radio" name="rozmiar" value="640x480" />Rozmiar 640x480 <br />
  11. <input type="radio" name="rozmiar" value="800x600" />Rozmiar 800x600<br />
  12. </form>
  13. </div>';
  14. }
  15. ?>

jak deklarujesz typ image nie dawaj html, pisałem ,
header daj dopiero ja bedzie wiadomo że wysłał plik czyli np w lini 16.
jak konczysz </div> daj exit; po co reszta skryptu ma byc analizowana skoro jest już zadeklarowany html i brak pliku.
od lini 48 znowu dałes html , musisz zdecydowac albo html albo image.
jesli chcesz komunikat o tym że plik zostal dodany pobaw sie z header('location: tutaj.php');
jak wywołujesz obrazek to na końcu dawaj imagedestroy($image);
Majzel
dzięki... jednak nie rozumiem, jak mam nie dawać html? to jak mam ten formularz wyświetlić? no bo go echem wyświetlam, to jest źle? to w 48 linii poprawiłem teżn na echo 'treść'; ale dalej to samo.. sorry troche slabo kapuję to, mógłbyś mi wytlumaczyc o co chodzi z tym kiedy nie mam dawac html tylko image ?
najlepiej jak byś mi to pokazał na przykładzie ew. ten mój kod zedytował i jak ma to być dobrze.
żadnego komunikatu o błędzie nie ma tylko link z adresem.
Spawnm
Cytat(Majzel @ 24.10.2008, 18:04:09 ) *
to w 48 linii poprawiłem teżn na echo 'treść'; ale dalej to samo..

a czy ja pisałem abyś dał to w echo ?!?
pisałem że jak używasz funkcji operujących na grafice takich jak imagejpeg(); to nie wyświetlasz tekstu / html bo zadeklarowałes w header typ pliku image.
czyli to co jest w liniach 30-45 dajesz tak aby w tej samej chwili nie było nic związanego z wyświetlaniem tekstu.
czyli albo dajesz header('Content-Type: text/html; charset=utf-8'); i dajesz formularz pobierasz obraz i go zapisujesz ,
albo deklarujesz header('Content-type: image/jpeg');
i bawisz się z gd2 i wykonujesz operacje na grafice.
Majzel
no ok rozumiem, czyli nie można łączyć wyświetlania tekstu ani niczego z biblioteką gd2, no ok, ale w takim razie jak ja mam to zrobić, zeby na jednej stronie wyświetlił mi się zmniejszony obrazek i jakies instrukcje html ?
myślałem, o odnośniku htmlu w którym osobno by się otwierał ten plik po kliknięciu ale znowu jak by tam te dane przekazać ? nie wiem, macie jakieś pomysły? jak to jest wykonane na innych serwisach ?
Lejto
dajesz to w ifa z użyciem $_GET jeżeli plik jest przesłany poprawnie idzie do danego adresu za pomocą ifa i $_GET'a i tam odczytujesz ze zmiennej zdjęcie i pozostałe informacje
pomyśl
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.