Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z wyciąganiem jpg z bazy, ...gdzieś gubi istotne dane
ketman
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.01.2006

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


Witam!

Wprawdzie tematów na temat uploadu jest już kilka to jednak nigdzie nie spotkałem rozwiązania mojego problemu. A wygląda on tak:

Muszę wrzucić obrazek do bazy. Potem go wyciągnąc i wyświetlić. NIby nic, prawda?
I wychodzi mi to do pewnego stopnia...

1. Upload - poszedł ok. W każdym wypadku się uploaduje.
2. Zapis do bazy - ok. Zawsze jest coś w polu BLOB w rozmiarze odpowiadającym plikowi wrzucanemu
3. Wyciąganie - i tu jest problem. Mam dwa pliki (linki poniżej). Jeden (ok.jpg) leci bez problemu natomiast co do drugiego to dostaję notorycznie błąd "Passed data is not in 'JPEG' format "


bezproblemowy

wkurzajacy
-- edit:
Proszę podać jakiś inny przykład. Niektórym taka fotka może się nie spodobać...
~crash


  1. <?php
  2.  
  3.     $plik = $_FILES['plik'];
  4.     header('Content-type: '.$plik['type']);
  5.     $fh = fopen($plik['tmp_name'], "rb");
  6.     $fh_u = addslashes(fread($fh, $plik['size']));
  7.  
  8.     $link = init(); //funkcja ustanawiajaca polaczenie do bazy
  9.     $query = "INSERT INTO wizytowki (plik) values ('$fh_u')";
  10.     mysql_query($query);
  11.     $id = mysql_insert_id();
  12.     $query = "SELECT plik FROM wizytowki WHERE OID = $id";
  13.     $res = mysql_query($query);
  14.     $line = mysql_fetch_array($res);
  15.     $ob = imagecreatefromstring($line['plik']);
  16.     imagejpeg($ob);
  17.     imagedestroy($ob);
  18.  
  19. ?>


Kod wstawiony powyżej jest streszczeniem tego co ma być, ale wystarczającym streszczeniem.

Czy ktoś zetknął się z tym problemem? Acha, porady o zapisywaniu pliku na serwerze się nie sprawdzą bo nie mam dostepu do zapisu przez php.

Ten post edytował ketman 30.01.2006, 08:44:49
Go to the top of the page
+Quote Post
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Pokaż dokładnie jak wygląda ten błąd i gdzie się pojawia...
Go to the top of the page
+Quote Post
ketman
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.01.2006

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


OK, już piszę dokładnie. Problem nie jest nawet w samym kodzie tylko w problem.jpg. O ile ok.jpg wrzuca się pięknie i pokazuje również to problem.jpg jestem w stanie uploadować, zapisać do bazy ale nie jestem w stanie zropbić z niego obrazu po tym wszystkim. Dostaję wspomniany komunikat, że 'nie jest to format jpeg'. Przypuszczam, że problemem jest coś zapisane w samym .jpg - czyli wszystkie informacje dodatkowe.
Po zapisie do bazy i odczycie stamtąd przestaje to być jpeg dla php.
Jeżeli wiesz które znaki mogą dawać taki efekt, bardzo prosze o odpowiedź. Poza zwykłym escapowaniem slash'y próbowałem kodować to jeszcze np. base64_encode (co miałoby niby uczynić zawartośc pliku spokojnie odczytywalną) ale nic to nie dało.

Zatem problemem jest problem.jpg a chciałem uzyskać informacje jak go przerobić, żeby był odczytywalny z bazy. Bez zapisu do MySQL nie mam z nim problemów.

php jest 5, MySQL też.

Żeby jeszcze dokładniej; error dostaję z imagecreatefromstring jeżeli string jest zawartością jpeg zapisaną w BLOB.

------------------------------------------------------

Problem został rozwiązany. Trochę przez przypadek.
Porada dla innych forumowiczów: 'Nie kombinujcie z kodowaniem tabel w MySQL. Zwykły latin2 zwykle wystarcza.' (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Dziekuję ~crashowi za poswięcony czas.

Ten post edytował ketman 30.01.2006, 09:38:01
Go to the top of the page
+Quote Post
Kamson
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 23.10.2006
Skąd: Warszawa

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


Odpopie troszkę temat ale mam taki sam problem.

Zdjęcie po odczycie z bazy wywołuje błąd : Passed data is not in 'JPEG'

  1. <?php
  2. $SqlZdj=mysql_query("SELECT * FROM bis2_zdjecia WHERE subkategoria='".$RowSub['id']."'");
  3. while ($RowZdj = mysql_fetch_array($SqlZdj)){
  4.  
  5. $plik = imagecreatefromstring(base64_decode($RowZdj['plik']));
  6. $width = imagesx($plik);
  7. $height = imagesy($plik);
  8. ?>




co 6-7 plik wywołuje taki błąd. imagecreatefromstring wywoluje po to by wyciągnąć rozmiar zdjęcia dla JS'a który powiększa miniaturkę.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:51