Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL] Pobieranie zdjęcia z bazy
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
mike007
Witam!

Mam taki o to problem:

Buduje sklep internetowy w oparciu o bazę MSSQL, na której działa subiekt. Praktycznie całe zarządzanie odbywa się przez Subiekta GT. Praktycznie wszystko mi już działa. Złożone zamówienie wchodzą odrazu do bazy subiekta itd., ale

no właśnie, ale gdy chce wyjąć obrazek z bazy, który został dodany przez Subiekta to w najlepszym wypadku 2cm obrazke się pojawia, a więcej tylko szare pole wielkości zdjęcia. Próbowałem wielu sposobów np:

  1. <?php
  2.  
  3. $query="SELECT zd_Zdjecie FROM tw_ZdjecieTw WHERE zd_Id=$id";
  4. $result=mssql_query($query);
  5. $image=mssql_fetch_array($result);
  6. header('Content-type: image/jpeg');
  7. imagejpeg($im[zd_Zdjecie]);
  8.  
  9. ?>

przykład wyżej działa w mysql bez problemu. w mssql tylko część się wyświetla albo wcale (w zależności, które zdjęcie chce wyświetlić.

Na necie znalazłem jeszcze taki sposób, wywala błędy, więc albo źlecoś robie albo wogóle to jest źle.
  1. <?php
  2.  
  3. $query="SELECT zd_Zdjecie FROM tw_ZdjecieTw WHERE zd_Id=$id";
  4.  $result=mssql_query($query);
  5. $data=mssql_fetch_array($result);
  6. $data = base64_decode($data[zd_Zdjecie]);
  7. $im = imagecreatefromstring("$data");
  8.  header('Content-type: image/jpeg');
  9.  imagejpeg($im);
  10.  
  11. ?>


W większości przypadków wyświetla się URL do aktualnej strony, a jak wezme pokaż źródło to widze krzaczki.

Czy ktoś może mi pomóc?

Pole w bazie subiekta do przechowywania zdjęcia jest typu image.

Jak ktoś ma pomysł co z tym zrobić to proszę o odpowiedź na forum, albo na maila albo na gg: 3030365.

Pozdro,

Mike
Zbłąkany
Ale widać, że masz problemy z czytaniem ze zrozumieniem winksmiley.jpg Dwa posty pod twoim: "pole image" A pole typu image to zwykłe dane: wyciągasz i wysyłasz headerem jako obrazek smile.gif
mike007
Umiem czytać i czytałem posta ponizej. I wiem jak się wyciąga zdjecie z bazy np mysql. Problem polega na tym, że wyciagajac to zdjecie z bazy mssql wyświetla się tylko część zdjęcia, albo wogóle.

Zdjęcia do bazy są dodawane przez Interfejs subiekta, więc może jest jakoś kodowane, albo nie wiem co.

Rozmawiałem dziś z informatykiem, który też łączył zamówienia online z subiektem gt i też miał problem z wyciąganiem zdjec z bazy subiekta i postanowił w niewykorzystywanym polu dodawać scieżkę do pliku ze zdjęciem, ale dla mnie to nie jest rozwiązanie, bo skoro jest interfejs to po co tworzyć dodatkowy do dodawania zdjęć.

Chyba że coś źle robie nadal, ale pod mysql nigdy nie miałem z tym problemu.

Probowalem jeszcze wyciagnac zdjecie z bazy mssql przeniesc do mysql i wtedy je wyswietlic z mysql w taki sposob jaki wiem ze na 100% dziala w mysql, ale zdjecie sie nie wyswietla.

Moze ma ktos jakas sugestie?
SongoQ
Wydaje sie ze nieodpowiednie pole. MSSQL uzywa czegos takiego jak pol binarnych o ile pamietam. Nic nie pisales o base ani o innym formacie posrednim, czyli dane musza w bazie lezec w formacie ktory nie zrobi konwersji w bazie. Mozliwe ze to jest to, nie przygladalem sie temu zabardzo ale to moze byc rozwiazaniem.
Zbłąkany
Typ image jest polem binarnym, więc nie sądzę, aby API SubiektaGT kodowało zdjęcia smile.gif O ile dobrze pamiętam, a bawiłem się subiektem jakiś czas temu: to API otwierało plik, i żywcem czytało zawartość i wrzucało do bazy, gdzieś przy okazji zapisywało format zdjęcia.
Marelek
Witam.

Mam dokładnie ten sam problem.
Nie wiem czy ktoś już to może rozwiązał.?
Ja próbowałem też przekopiować pole ze zdjęciem do MySQL'a i tu się okazało że obcina na 4KB.
Czyli jeśli obrazek ma poniżej 4KB to pobierze z MSSQL'a cały, jeśli jest wiekszy to utnie na 4KB.
Marelek
Witam.

Rozwiązałem problem.
Ograniczenie 4KB jest w domyślnej konfiguracji PHP.
Najprościej jest dodać na począdku skryptu:
  1. <?php
  2. ini_set('mssql.textlimit','32768');
  3. ini_set('mssql.textsize','32768');
  4. ?>

W tym przykładzie zwiększyłem do 32KB i mi chula. smile.gif
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.