Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Grafika w bazie danych (jpeg/gif); problem z wyswietlaniem
Forum PHP.pl > Forum > Gotowe rozwiązania
thorn_1
Na wstepie powiem ze choc jestem początkującym to …..SZUKALEM !!! wiec proszę sobie odpuścić nabijanie postów w stylu: „szukaj było”;-)

Wiec problem tkwi gdzieś tu ;-)

SA trzy skrypty
1 pobiera dane (obraz) z dysku
[php:1:4a591eb258]<?php
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
// Open the uploaded file
$file = fopen($_FILES["userfile"]["tmp_name"], "rb");
// Read in the uploaded file
$fileContents = fread($file, $_FILES["userfile"]["size"]);
// Escape special charcters in the file
$fileContents = AddSlashes($fileContents);
}
else
$fileContents = NULL;

?>[/php:1:4a591eb258]

wczytywanie do bazy wydaje sie byc poprawne, poniwaz w adminie widze ze “rozmiar” sie zgadza,

i przekazuje do skryptu 2

2 wyswietla „potwierdzenie” dodania rekordu do bazy, obraz jest rysowany
[php:1:4a591eb258]<?php <img src="rysuj.php?index= $Id ">;
?>[/php:1:4a591eb258]

3 skrypt to „rysowanie”

[php:1:4a591eb258]<?php
if (!($wykonaj = @mysql_query ($zapytanie, $polaczenie)))
BLAD();

$Obraz=mysql_fetch_array($wykonaj);
if (!empty($Obraz['ZDJECIE']))
{
header("Content-Type: image/gif");
print ($Obraz['ZDJECIE']);
// tu wersja druga, pozbywa sie smieci
// $obrazek = stripslashes ($Obraz['ZDJECIE']);
// print ($obrazek);
}
[/code]
?>[/php:1:4a591eb258]

i nic z tego dostaje jedynie komunikat
Obrazek "http://127.0.0.1/~Test/Skrypty/rysuj.php?index=152" nie może zostać wyświetlony, ponieważ zawiera błędy.


Czy ktokolwiek ma jakies pomysły?questionmark.gif
Czy taki stan rzeczy może być spowodowany, bledna/niepelna konfiguracja serwera/php questionmark.gif?
-> mile widziane ;-]

Pozdrawiam
BzikOS
A po co slashujesz uploadowany obrazek? :?
thorn_1
hmmm... z tego co wiem inaczej nie wejdzie do bazy ;-) (po drugie, na forum rowniez tak robia)
ale to nie jest powodem problemow ...
matid
Właśnie że to może być główny problem.
Spróbuj rozwiązać to bez slashowania zdjęcia a jedynie użycia na nim funkcji [manual:4acc26c57c]mysql_escape_string[/manual:4acc26c57c].
W moim wypadku działa bez problemu.
thorn_1
zamienilem slashowanie na mysql_escape_string,
(po pobraniu z bazy poprostu daje echo"$tresc") ale niestety nic to nie dalo sad.gif sad.gif sad.gif.
Nadal mam wyswietlany komunikat o bledzie "obrazka",
normalnie juz nie wiem co jest problemem ..... HEEELP :cry:

moze "ktos" wie czy wina jest w zapisie do bazy cz y w odczycie ....
Pyksel
Wedlug mnie to powinienes sprawdzic wielkosc liter sam tak czasem mam
jak masz np :
Cytat
obrazek.JPG

to sprawdz czy te JPG nie jest z duze bo to tez jest róznica i wpisz dobrze. :?
thorn_1
hmm... ale ja nie mam ustawionego na sztywno obrazka, pobieram go poprzez :

[php:1:6032306a99]<?php
<input name="userfile" type="file">
?>[/php:1:6032306a99]
wiec otwiera sie okienko do pobrania pliku... wiec tu raczej bledu nie ma ;-)
a raczej :cry: bo juz nie daje rady z tym skryptem, HEEEELP :?
thorn_1
czy config apache+php, moze byc przyczyna blednego wyswietlania jpg'ow questionmark.gif?
Dawid Pytel
Pobieranie pliku do zmiennej:

[php:1:458ef983a1]<?php
$data = addslashes(fread(fopen($_FILES['file']['tmp_name'], "rb"), $_FILES['file']['size']));
?>[/php:1:458ef983a1]

To zapisujesz sobie do bazy.
A teraz wyswietlenie obrazka: tworzysz sobie plik img.php i w jego kodzie:

[php:1:458ef983a1]<?php
Header( "Content-type: $type"); /* $type to typ pliku pobrany np z bazy */
echo $data; /* wypisujesz zawartosc Twojego pola binarnego */
?>[/php:1:458ef983a1]
thorn_1
Cytat
Dawid Pytel
takie rozwiazanie tez nie idzie :?


ale .... no wlasnie udalosie mi rozwiazac to w taki sposob (poniewaz dane w bazie byly OK, przyczyna musialo byc pobieranie/wyswietlanie ) wiec :
[php:1:d96d1b4373]<?php

if (!empty($Obraz['ZDJECIE']))
{
header('Content-type: image/jpeg');

// nowo dodany header
header('Content-transfer-encoding: binary');

print ($Obraz['ZDJECIE']);
}

?>[/php:1:d96d1b4373]

wystarczylo dodac ten header i DZIALA!!!

Mam jedynie pytanie czy ktos moze mi wyjasniec dlaczego questionmark.gif? :wink:
(tak dla wlasnego info)
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-2024 Invision Power Services, Inc.