Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z gubieniem bitów przy uploadzie.
Forum PHP.pl > Forum > PHP
Larin
Witam,

Przy uploadzie plików graficznych, co jakiś czas zdarza się "zgubić" jpgowi jakieś bity, w związku z czym, załadowany plik wygląda np. tak:



Początkowo myślałem, że problem mógł pojawiać się przy wgrywaniu zuploadowanego zdjęcia po ftp przez skrypt, jednak mimo usunięcia tej części kodu problem występuje nadal. Jest wykorzystywany najzwyklejszy move_uploaded_file(), wykluczam możliwość zepsucia się pliku w trakcie konwersji rozmiaru - psuje się oryginał, który nie jest poddawany _żadnym_ obróbkom.

Czy może ktoś z Was zetknął się z takim problemem, i jeśli tak, w jaki sposób udało się go rozwiązać?

Pozdrawiam i proszę o pomoc.
wookieb
A masz kod?
Larin
Oczywiście mam, choć nie jestem pewien, czy rzuci choć trochę światła :-)

  1. for ($i = 1; $i <= 10; $i++) {
  2.  
  3.  
  4.  
  5. $g[$i] = generuj($liczba);
  6.  
  7. $plik_tmp[$i] = $_FILES[$i]['tmp_name'];
  8. $plik_name[$i] = $_SESSION['user'].'-TR-'.time().$g[$i];
  9. $plik_size[$i] = $_FILES[$i]['size'];
  10.  
  11. if(move_uploaded_file($plik_tmp[$i], $_SERVER['DOCUMENT_ROOT'].'/vPhotos1/'.$plik_name[$i]) && $_POST['travel_album'] !== "choose" && $plik_size[$i] < 5100100 )
  12. {
  13.  
  14. $photo1 = $plik_name[$i].'.jpg';
  15. $photo2 = $plik_name[$i].'_l.jpg';
  16. $photo3 = $plik_name[$i].'_s.jpg';
  17. //ftp_put($conn_id, $photo1, $plik_tmp[$i], FTP_BINARY);
  18.  
  19. $photo_orginall = 'http://' . $ftp_server . '/' . $plik_name[$i] .'.jpg';
  20.  
  21. $photo_small = 'http://' . $ftp_server . '/' . $plik_name[$i] .'_s.jpg';
  22. $photo_large = 'http://' . $ftp_server . '/' . $plik_name[$i] .'_l.jpg';
  23.  
  24. # tutaj dalsze funkcje od resize'owania _s i _l, oryginal juz nie jest ruszany
erix
Na innym serwerze kod zachowuje się tak samo? Masz odpowiednio wysoki limit pamięci? Ze wszystkimi plikami to samo? Przy innej wersji PHP co się dzieje? Paczkowany, czy kompilowany?
Larin
Już spieszę z odpowiedziami.

Cytat(erix @ 24.08.2009, 14:50:12 ) *
Na innym serwerze kod zachowuje się tak samo?

W kodzie brak jakichś udziwnień - move_uploaded_file wszędzie działał mi tak samo, bez żadnych problemów. Dopiero tutaj coś się zaczęło sypać.

Cytat(erix @ 24.08.2009, 14:50:12 ) *
Masz odpowiednio wysoki limit pamięci?

Próbowałem nawet przy ustawionym 500M, nie pomogło...

Cytat(erix @ 24.08.2009, 14:50:12 ) *
Ze wszystkimi plikami to samo?

Broń boże nie - nie mogę znaleźć żadnej regularności w tym - co któraś z fotek się buntuje i psuje. Z początku też myślałem, że chodzi o limity pamięci. W związku z czym próbowałem na wysokich limitach, wgrywałem 8 fotek na raz, wszystkie powyżej 1.5MB. Nie stało się tak z żadnym zdjęciem.

Cytat(erix @ 24.08.2009, 14:50:12 ) *
Przy innej wersji PHP co się dzieje?

Nie sprawdzałem, niestety. Tymczasowo nie ma administratora, zmiany w wersji php są poza moim zasięgiem.

Cytat(erix @ 24.08.2009, 14:50:12 ) *
Paczkowany, czy kompilowany?

J/w, jednak wydaje mi się, że ręcznie kompilowany pod gentoo.
erix
To jeszcze raz skompiluj - do najnowszej stabilnej wersji, update wszystkich bibliotek zależnych (zwłaszcza libjpeg).
wookieb
A ja coś czuje, że tutaj jest problem ze zdjęciami jpeg zapisanymi w cmyku. Niestety jak to dokłądniej rozwiązać to nie wiem. Spróbuj potestować z takimi jpgami - w photoshopie mozesz zapisac tak jpg. jezeli bedziesz mial problem z zapisaniem pisz na pw.
zegarek84
Cytat(Larin @ 24.08.2009, 13:50:10 ) *
Czy może ktoś z Was zetknął się z takim problemem, i jeśli tak, w jaki sposób udało się go rozwiązać?

a dysk jest w pełni sprawny?? widziałem coś w tym stylu - zdjęcia z aparatu cyfrowego... te paski będziesz miał też w pionie itd. - raz szersze raz węższe... akurat tam po przeskanowaniu dysku został on zwrócony na gwarancji ^^ - ale niestety nie było kopi zdjęć ;/
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.