Autor Zpráva
DZer
Profil
Na svojí stránce mám video ve formátu .mov(QuickTime) a chtěl bych aby když někdo klikne na jeho odkaz aby se stáhlo a né spustilo.....jak to zařit.Mně napadla jenom varijanta že bych to zabalil v raru.De to nák jinak.Za odpovědi předem děkuji.
PerToon
Profil
Pokud bude soubor zabalený, vždy se stáhne. Pokud bude jako video, několikrát se to zde již řešilo a myslím, že se dospělo k názoru, že to ovlivnit nelze.
igamenir
Profil
PerToon
Několikrát se to tu řešilo a došlo se k názoru, že to lze ovlivnit velmi snadno.

DZer
Koukni se na http://igamenir.nothrem.cz/postupy/stahovani-pres-php.php

//edit - opravený odkaz
PerToon
Profil
igamenir - Tak to jsem zase vedle, ale.. jseš si jistej tou adresou?
Lukáš M
Profil
je to hned první téma v sekci "jak něco udělat" - označené červeným vykřičníkem. Ako na dowload.
nothrem
Profil *
Takhle je to správně pro soubory o libovolné velikosti:
	if (file_exists($path.$filesource)):

header('Pragma: private');
header('Cache-control: private, must-revalidate');
header("Content-type: text/x-ms-iqy");

$bs = 1024*512;
$fp = fopen($path.$filesource,"r");
$fs = filesize($path.$filesource);
header("Content-Disposition: attachment; filename=$filedestna;");
header("Content-Length: $fs");
$precteno = 0;
while ($precteno < $fs)
{
$filedata=fread($fp,$bs);
print $filedata;
$precteno += $bs;
}
fclose($fp);
else:
header("location: download.php?filename=".$_POST["filename"]."&error=701");
endif;
PerToon
Profil
Tak to se omlouvám za svojí zbrklou blbost... asi sem měl ještě v podvědomí tenhle názor: To záleží na nastavení cílového počítače. To neovlivníš.9
igamenir
Profil
Ten postup, co mam na netu je omezen pamětí serveru - řádově pár mega. To nothremovo je lepší.
EDIT - už mám na netu to Nothremovo
DZer
Profil
Diky všem.......
nothrem
Profil
Podle nápovědy php vyplývá z výše uvedeného postupu, že nejdůležitější je řádka
header("Content-Disposition: attachment; filename=$filedestna;");

Pokud má na druhou stranu být soubor otevřen místo stažen, změní se hlavička na inline:
header("Content-Disposition: inline; filename=$filedestna;");


NOTE: In Internet Explorer, the Content-Disposition header is important, otherwise it will be inline.

'Content-Disposition: attachment' will ALWAYS make IE download it.
nothrem
Profil
Tak zpět. Funkce ReadFile se sama stará o bufferování (i když to v nápovědě není), takže odeslání souboru ke stažení je
		/* //zbytečné, stačí readfile

$bs = 1024*32;
$precteno = 0;
$fp = fopen($path.$filesource,"r");
while ($precteno < $fs)
{
$filedata=fread($fp,$bs);
print $filedata;
$precteno += $bs;
}
fclose($fp); */
@readfile($path.$filesource);

Samozřejmě se předtím musí odeslat příslušné hlavičky o jméně souboru. Informace o velikosti je automaticky předána funkcí readfile.

A ještě jedna důležitá poznámka: Tento postup nepodporuje Resume, protože si prohlížeč/downloder myslí, že stahuje ze souboru neco.php...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0