Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Content-Length - wysyłanie wielkości pliku
Forum PHP.pl > Forum > Przedszkole
kzyhu
Witam!

Mój sklep postawiony na oscommerce w nazwa.pl bez problemu wysyłał do przeglądarki informację o wielkości ściąganego pliku.
Gdy przeniosłem sklep na nowy serwer w statnet.pl (managed vps) "content-length" prestało działać. Teraz przy ściąganiu
plików, przeglądarka nie wie jaka jest jego wielkość.

Moje pytanie to, czy na ten parametr może mieć wpływ jakieś ustawienie serwera? Bo skrypt się nie zmienił. Działał na PHP5 i najnowszym
MySQL tak samo jak teraz, na nowym serwerze.

Poniżej wklejam kod skryptu:

  1. header('Content-Length: '.filesize(DIR_FS_DOWNLOAD . $downloads['orders_products_filename']));


gdzie:

  1. define('DIR_FS_CATALOG', '/home/kzyhu/');
  2. define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');


Ściąganie plików działa bez problemu, "DIR_FS_DOWNLOAD" prawidłowo prowadzi do katalogu z plikami.
Pomocy :-)
marcio
  1.  
  2. header('Content-Length: '.sprintf("%d" ,filesize(DIR_FS_DOWNLOAD . $downloads['orders_products_filename'])));
  3.  


Zobacz tak.

kzyhu
Niestety, dalej to samo. Pliki z zamówień ściągają się, ale FireFox pokazuje "Szacowany czas nieznany".
marcio
Pokaz wszystkie naglowki jakie wysylasz
kzyhu
  1. $tmp_tab = explode("/",$downloads['orders_products_filename']);
  2. $nazwa = $tmp_tab[sizeof($tmp_tab)-1];
  3. // Now send the file with header() magic
  4. header("Expires: Mon, 1 Jan 1980 00:00:00 GMT");
  5. header("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT");
  6. header("Cache-Control: no-cache, must-revalidate");
  7. header("Pragma: no-cache");
  8. ini_set('zlib.output_compression', 'Off');
  9.  
  10. header("Content-Type: Application/octet-stream");
  11. header('Content-Length: '.filesize(DIR_FS_DOWNLOAD . $downloads['orders_products_filename']));
  12. header("Content-Disposition: attachment; filename=\"$nazwa\"");
  13. header("Content-Transfer-Encoding: binary");


Zlecę odpłatną naprawę tego skryptu w OsCommerce. Problem opisany powyżej. Proszę pisać na GG: 846058. Płatność przelewem lub PayPal.

Witam!
Odświeżam temat i podaję częściowe rozwiązanie:

SERWER nie wysyłał do PRZEGLĄDARKI wielkości pliku, ponieważ Apache ma włączoną kompresję plików PHP.
W pliku .htaccess - wg. zaleceń admina serwera - tę linijkę:

  1. SetEnvIf Request_URI download\.php no-gzip


i zaczęło działać! FireFox, Opera, odczytują wielkość pliku, ale dopiero dzisiaj zauważyłem, że nic
nie zmieniło się w IE8. (Przy ściąganiu pokazuje: pozostały czas nieznany)

Czy ktoś wie dlaczego?

P.S.

A oto nagłówki, które odbieram używając:
FireFox: http://kzyhu.nazwa.pl/ff.html
IE8: http://kzyhu.nazwa.pl/ie8.html

Widać, że serwer odpowiada dla FF nagłówkiem Content-Length, a IE8 nie odbiera już tego nagłówka... :/

NO... zna ktoś rozwiązanie? smile.gif
zegarek84
dla ie8
Cytat
Content-Encoding: gzip

co znaczy, że gdzieś jeszcze czegoś nie wyłączyłeś z dodatkową kompresją winksmiley.jpg - co z kolei jeśli po kompresji (dodam buforującej, i po a nie przed buforem kompresji...) dopiero nie poda się wielkości wymusza:
Cytat
Transfer-Encoding: chunked

ps. da się kompresować treść i wysyłać wielkość pliku - oczywiście w przypadku tego załącznika to nie ma sensu bo już jest skompresowany zip...

nie ma kodu jak wysyłasz pliki to jak mamy pomóc?? - temat już jakiś czas temu widziałem ale nie dołączyłeś nagłówków a pisałeś, że wyłączyłeś kompresję - jak się okazuje gdzieś nie do końca skoro taki nagłówek jest wysyłany do ie....
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.