Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi
ketman
post
Post #2





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

Posty w temacie


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: 16.10.2025 - 13:36