Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlanie zdjęcia z bazy MSSQL na stronie
ssylwester
post 8.02.2011, 11:01:24
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 18.05.2010

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


Zapisuję sobie zdjęcie do bazy MSSQL w formacie varbinary(MAX).
Próbuję wyświetlić je na stronie w określonej tabelce w ten spocób:
  1. header("Content-header: image/jpg");
  2. echo $obrazek;

Jedna k na stronie pojawiaja mi się krzczki.
Dla pewności sprawdzałem czy zdjęcie w bazie jest poprawnie zapisane i w momencie
gdy mam czysty skrypt php i nic innego nie wyświetlam na stronie oprócz zdjęcia to pojawia się ono tak jak powinno.
W momencie pojawienia się innej treści pojawiają się krzaczki w miejsce zdjęcia.
Może ktoś wie jak je wyświetlić zdjęcie pomiędzy innym tekstem.
Go to the top of the page
+Quote Post
wookieb
post 8.02.2011, 11:08:46
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Content-type
Skąd ty wziąłeś Content-header? Strzelasz po prostu?


--------------------
Go to the top of the page
+Quote Post
ssylwester
post 8.02.2011, 11:57:04
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 18.05.2010

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


Masz rację Content-type. Jednak to zmienia tylko fakt że zamiast krzaczków pokazuje się kwadracik przekreślony krzyżykiem i nic poza tym.
Go to the top of the page
+Quote Post
wookieb
post 8.02.2011, 11:58:29
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Podaj link do strony tudzież obrazka


--------------------
Go to the top of the page
+Quote Post
ssylwester
post 8.02.2011, 12:56:34
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 18.05.2010

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


Niestety nie mogę podać linku ponieważ serwery z bazą jak i www stoją w sieci niedostępnej z zewnątrz.
Mogę tylko podać funkcje jak jest zapisywany plik do bazy.

To jest moja tabela:
  1. CREATE TABLE [dbo].[uzytkownik](
  2. [user] [varchar](50) NOT NULL,
  3. [zdjecie] [varbinary](max) NULL
  4. ) ON [PRIMARY]

I funkcje:
  1. function getFileExtension($name){
  2. $namepart = explode(".", $name);
  3. $namepart = array_reverse($namepart);
  4. return $namepart[0];
  5. }
  6.  
  7. function convertImage($filename){
  8. $fileType = getFileExtension($filename);
  9. $fileType = str_replace('\'','',$fileType);
  10. if(in_array($fileType, array('jpg'))){
  11. $dataString = file_get_contents($filename);
  12. $arrData = unpack("H*hex", $dataString);
  13. $data = "0x".$arrData['hex'];
  14. return $data;
  15. }
  16. else
  17. return false;
  18. }

oraz kawałek kodu z updatem do bazy danych:
  1. $data = convertImage($file)
  2. $sql = "UPDATE uzytkownik SET zdjecie = ".$data." WHERE user='maciek'";
  3. $result = savesqldata($sql); //moja funkcja zapisu do bazy

gdzie $file to pełna ścieżka do pliku, który wcześniej został uploadowany na serwer i odpowiednio zmniejszony rozmiar. np "./images/photo.jpg"

Wszystko zapisuje się poprawnie do bazy danych.
Potem tylko:
  1. $sql = "SET TEXTSIZE 2147483647";
  2. @mssql_query($sql);
  3. $sql = "SELECT zdjecie FROM uzytkownik WHERE user='maciek'";
  4. $rs = @mssql_query($sql);
  5. if (!$rs) {
  6. exit("<strong>Error</strong>");
  7. }
  8. $rs = mssql_fetch_assoc($rs);
  9. $zdjecie = $data['zdjecie'];
  10.  
  11. header("Content-type: image/jpeg");
  12. echo $rs['zdjecie'];

I wszystko ładnie się wyświetla. Ale w momencie gdy np przed lub po
  1. header("Content-type: image/jpeg");
  2. echo $rs['zdjecie'];

dodam jakąś treść to mam biały obrazek z przekreślonym krzyżykiem w rogu. A chciałbym wstawić ten obrazek w istniejącą już treść strony.

Go to the top of the page
+Quote Post
wookieb
post 8.02.2011, 13:08:44
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Włącz pełne raportowanie błędów. Otwórz tą stronę z twoi obrazkiem. Zapisz go i wystaw gdzieś ten obrazek ONLINE.


--------------------
Go to the top of the page
+Quote Post
nospor
post 8.02.2011, 13:10:07
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wookieb przeciez on wyswietla obrazek (kod obrazka i naglowki) razem z inną normalną treścią strony. Czekałem aż wkoncu na to zwrocisz uwagę, ale widzę nie zwracasz tongue.gif
No, to tyle mojej podpowiedzi. Bogatsi o nową wskazówkę kontynuujcie dalej smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post 8.02.2011, 13:13:14
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Aha :/
http://mynthon.net/tools/imgbase64/index.php

Ale takie rzeczy robi się w osobnych skryptach, które tylko wyświetlają obrazek i w miejsce HREF wstawisz link do skryptu
  1. <img src="skrypt_z_obrazkiem.php" alt="" />


--------------------
Go to the top of the page
+Quote Post
ssylwester
post 9.02.2011, 07:26:52
Post #9





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 18.05.2010

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


Dzięki za naprowadzenie mnie i wyjaśnienie. Już wszystko działa jak należy.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 16:12