Witam,
kod poniżej :

  1. <?php
  2. $this->db->select("p_image_name, p_image_type, p_image_size, p_image_image ")->where('id_p',$this->id_p);
  3.  
  4. $result = $this->db->get('dnm_t_products');
  5.  
  6. if($result->num_rows() == 0)
  7. {
  8. throw new eProduct();
  9. }
  10.  
  11. $row = $result->row();
  12.  
  13. $rozmiar = $row->p_image_size;
  14. $typ = $row->p_image_type;
  15. $nazwa = $row->p_image_name;
  16. $plik = $row->p_image_image;
  17.  
  18. header("Content-type: $typ");
  19.  
  20.  // okno Otwórz / Zapisz (działa ok - plik zapisuję się i otwiera prawidłowo) 
  21.  //header("Content-Disposition: attachment; filename=$nazwa");
  22.  
  23. // ten nagłówek nie działa 
  24. header("Content-Disposition: inline; filename=$nazwa");
  25. print($plik);
  26. exit();
  27. ?>


Nagłówki

Kod
  
   GET /sites/serwis/index.php/product/thumb/1 HTTP/1.1
   Host: local2
   User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
   Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
   Accept-Language: pl,en-us;q=0.7,en;q=0.3
   Accept-Encoding: gzip,deflate
   Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
   Keep-Alive: 300
   Connection: keep-alive
   Cookie: PHPSESSID=f983c3312763ee95119c3f8b9acede99
  
   HTTP/1.x 200 OK
   Date: Mon, 28 Jan 2008 09:56:44 GMT
   Server: Apache/1.3.34 (Win32)
   Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
   content-disposition: inline; filename=5fd34fefd532d3cff20049740ba67ae4.jpg
   Expires: Thu, 19 Nov 1981 08:52:00 GMT
   Pragma: no-cache
   X-Powered-By: PHP/5.2.3
   Keep-Alive: timeout=15, max=99
   Connection: Keep-Alive
   Transfer-Encoding: chunked
   Content-Type: image/jpeg


Jeśli zmienię nagłówek na header("Content-Disposition: attachment; filename=$nazwa"); to wszystko działa poprwanie, mam natomiast problem z wyświetleniem obrazka w przegladarce.

Próbowłem też z base64_encode() / base64_decode() ale efekt ten sam (czym nie byłem zaskoczony)

Gdzie szukać błędu ?

Czy kolejność nagłówków ma znaczenie ? blinksmiley.gif



Jak sprawdzić czy coś jeszcze nie leci do przegladarki ? Jeśli zmiana nagłówka powoduje prawidłowe otwarcie pliku to znaczy że wysyłana jest tylko zawartość pliku. Więc co jest nie tak - dostaje komunikat że obrazek nie może być wyświetlony bo zawiera błędy ?


Leniuchy ! smile.gif rozwiązałem to wstawiając przed nagłówkami i wysłaniem pliku ob_clean();