Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » NimnuL 07:23
 » leosh 07:21
 » Robak 07:17
 » cVas 07:15
 » waski 07:09
 » kemilk 06:57
 » PCCPU 06:56
 » AfiP 06:55
 » Miron 06:48
 » Ziomek 06:40
 » DYD 06:40
 » ProSavage 06:25
 » PeKa 06:22
 » fox19 05:58
 » bmiluch 05:37
 » P@blo 05:31
 » alien1 05:25
 » @GUTEK@ 05:21
 » pwil2 05:03
 » Kosiarz 04:58

 Dzisiaj przeczytano
 41133 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

[PHP] Upload zdjęcia. Skrypt nie "odbiera" poprawnie mi pliku. Wall of Text. , Arlathan 26/02/10 20:31
Hej,
głowię się nad tym już drugi wieczór. Mam skrypt, w którym dodaję zdjęcie do produktu. Po kolei opisze sytuację.

1. Strona z formularzem.
Formularz posiada enctype="multipart/form-data" oraz wysyła się jako POST. Nazewnictwo pól formularza sprawdzone. Submit kieruje na:

2. Strona ze skryptem wrzucająca zdjęcie oraz dodająca nazwę pliku do bazki. Zaczyna się standardowo: $uploadfile=$_POST["uploadfile"];
Potem używam skryptu znalezionego w necie, który na innych stronach działa bez zarzutu. I tu najśmieszniejsza część na strone nad którą pracuję na poczatku sprawiała problemy, potem nie wiem czemu zaskoczyło aby znów wywalać te same błędy. Skrypt wygląda tak:

//konwersja nr 1
$uploadedfile = $_FILES['uploadfile']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);
list($width,$height)=getimagesize($uploadedfile);
$newwidth=800;
$newheight=($height/$width)*800;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$wrzutka = $_FILES['uploadfile']['name'];
$filename = "../pix/".$_FILES['uploadfile']['name'];
imagejpeg($tmp,$filename,100);

Po tym nastepuje powyższy skrypt robiący miniaturkę i wgrywający zdjęcie do katalogu pix_mini. A po tym kod uzupełniającą tabelę produktu o nazwępliku.

Formularz ten prawidłowo odbiera mi nazwę pliku. Wywalam ją na ekran za pomocą echo i jak wół: img_8323.jpg (dla przykładu). Ale zaraz potem następuje salwa błędów:

Warning: Division by zero in /admin/pages/zdjecie-adding.php on line 13
Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /admin/pages/zdjecie-adding.php on line 14
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /admin/pages/zdjecie-adding.php on line 15
Warning: imagejpeg(): supplied argument is not a valid Image resource in /admin/pages/zdjecie-adding.php on line 18

Wysiadam już :/ Normalnie skoro na innych stronach dokładnie ten sam kod działa bez zarzutu, zwaliłbym na bibliotekę GD. Ale przecież nawet na tej stronie jak oddawałem projekt to działało. Ba! Na tym samym serwerze (hosting w home.pl) inna strona ma również galerię, opartą na tym samym kodzie i działa... Myślałem również, że próbuję wgrywać jakieś skopane jpg'i. Jednak to samo zdjęcie dodane w tym innymi miejscu dodało się bez zarzutu. Skopiowałem nawet kod z tej dobrej na tą złą stronę - nic...

Po tych dwóch wieczorach poddałem się. Bez wnikania w piękność kodu, złą optymalizację jest w stanie ktoś nakierować mnie lub wskazać gdzie tkwi chochlik?

Pełny kod tu:
1. http://pokazywarka.pl/formularz/
2. http://pokazywarka.pl/odebranie/
3. http://pokazywarka.pl/wynik/

-
I Rock. Fact.

  1. masz błąd , kubazzz 26/02/10 20:53
    $pozycja=$_POST["p1"];
    $uploadfile=$_POST["uploadfile"];
    print_r($_FILES);
    echo "<br/>";
    print_r($uploadfile);
    echo "<br/>";
    echo 'ID: '.$pozycja.'<br />';
    echo 'Plik: '.$_FILES["uploadfile"]["name"].'<br /><br />';

    //konwersja nr 1
    $uploadedfile = $_FILES['uploadfile']['tmp_name'];
    print_r($uploadedfile);
    echo "<br/>";
    $src = imagecreatefromjpeg($uploadedfile);


    i sprawdzaj.
    poza tym, po co jest zmienna $uploadfile ?
    w tym kodzie występuje tylko raz.
    sprawdź czy gdzieś nie masz pomylonej jej ze zmienną $uploadedfile

    u mnie ten skrypt działa.

    SM-S908

    1. tfu , kubazzz 26/02/10 21:02
      nie masz, tylko sprawdź błąd;)

      SM-S908

    2. i dodaj , kubazzz 26/02/10 21:03
      ten print_r() co powypisywałem to będziesz wiedział co i jak trochę.

      SM-S908

    3. wynik print_r , Arlathan 26/02/10 21:14
      Array ( [uploadfile] => Array ( [name] => DSCF0588.JPG [type] => [tmp_name] => [error] => 6 [size] => 0 ) )

      czyli według skryptu waga zdjęcia jest równa zero. Jeśli dobrze interpretuję. Generalnie zasugerowały mi to poprzednie błędy o dzieleniu przez zero.
      U Ciebie skrypt działa, na innej podstronie ten skrypt działa. Tylko w tym jednym przypadku nie pomimo tego, że jest identyczny. Trafiłem na jakieś złe feng szuj? Może pliki tej strony zapisane są na tym fragmencie dysku, który jest przesiąknięty złą energią? Serio, już nie wiem co myśleć...

      -
      I Rock. Fact.

      1. u mnie , kubazzz 26/02/10 21:40
        Array ( [uploadfile] => Array ( [name] => 6.jpg [type] => image/jpeg [tmp_name] => C:\XAMPP\xampp\tmp\php2B4B.tmp [error] => 0 [size] => 12732 ) )
        ustawienia php sprawdz

        SM-S908

        1. chyba nie za bardzo mogę , Arlathan 26/02/10 22:07
          grzebać w ustawieniach php skoro wszystko leży na home.pl. Chyba, że się mylę.
          Nie mniej dziękuję za Twój czas. Przeniosę stronę na swój serwerek (też na home.pl), najwyżej będe kombinować z przekierowaniem domen jak okaże się, że u mnie bangla.

          -
          I Rock. Fact.

  2. nie znam sie, , Tummi 26/02/10 22:17
    ale jaka wartosc przyjmuje
    $newheight=($height/$width)*800;
    ? Jesli zmiennoprzecinkowa, to moze
    imagecreatetruecolor()
    nie przyjmuje takiej na wejsciu i wywala:
    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /admin/pages/zdjecie-adding.php on line 14
    ?

    BTW: w czym najlepiej edytowac php (cos lekkiego, bezinstalacyjnego) i z jakiego kursu skorzystac na poczatek? Najbardziej interesuja mnie operacje na plikach/katalogach i obrazkach. Jestem na takim etapie, ze wystarcza mi notatnik ;) Duzo wiecej nie potrzebuje, ale w wolnej chwili cos bym poczytal i pocwiczyl.

    T.

    www.skocz.pl/uptime :D

    1. problem w tym , Arlathan 26/02/10 22:19
      że ten kod działa w innym miejscu na tym samym serwerze. Kod jest poprawny, problem tkwi gdzieś głębiej.

      -
      I Rock. Fact.

  3. tego, zbyt zmachany jestem żeby to analizować aleee , Wedrowiec 26/02/10 22:33
    spróbuj najpier wyświetlić ten plik przed obróbką czy cuś.
    Albooo sobie go zrób móve_uploaded_file na jakiś stały gdzie wiesz, że możesz (lokalizacja i uprawnienia pewne), wyświetl go a dopiero później przekaż go do obróbki.

    I nie post a właśnie tak jak miałeś $_FILES i tmp_name

    a print_r zrób sobie z $_FILES

    "Widziałem podręczniki
    Gdzie jest czarno na białym
    Że jesteście po**bani"

    1. i tego , Wedrowiec 26/02/10 22:34
      echo 'Plik: '.$_FILES["uploadfile"]["name"].'<br /><br />';

      //konwersja nr 1
      $uploadedfile = $_FILES['uploadfile']['tmp_name'];

      to sie zdecyduj - bo se wyświetlasz name a pobierasz tmp_name. Wyświetl sobie tmp_name i ten plik sprawdź czy jest i jaki ma rozmiar

      "Widziałem podręczniki
      Gdzie jest czarno na białym
      Że jesteście po**bani"

  4. DZIAŁA! , Arlathan 26/02/10 23:23
    http://pl2.php.net/...tures.file-upload.errors.php

    Value: 6; Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.

    w katalogu z ta podstroną nie było katalogu tmp. Dodałem go i poszło bez problemu :) Podziękowania dla Was wszystkich za wskazówkę (print_r) i koledze Ikarowi za ten link ;)

    -
    I Rock. Fact.

    1. noo na to wyglądało od początku , kubazzz 27/02/10 01:32
      a ustawienia php można na ogół nadpisać plikiem php.ini

      SM-S908

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL