Bestand laten downloaden en tegelijk verder surfen
Ik maak gebruik van een onzichtbaar iframe om een octet stream te versturen:
Code (php)
1
2
3
2
3
<?
echo '<iframe name="onzframe" src="videodownload.php" id="onzframe"></iframe>';
?>
echo '<iframe name="onzframe" src="videodownload.php" id="onzframe"></iframe>';
?>
In videodownload.php staat vervolgens deze code:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
include_once("../include.php");
if ($_SESSION["Sendfile"] !== "") {
SendFile($_SESSION["Sendfile"]);
$_SESSION["Sendfile"] = "";
}
?>
include_once("../include.php");
if ($_SESSION["Sendfile"] !== "") {
SendFile($_SESSION["Sendfile"]);
$_SESSION["Sendfile"] = "";
}
?>
De functie sendfile is als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
function SendFile($FileName)
{
//http://www.dynamicflow.nl/test/1.wmv";
//header("Content-Type: " . mime_content_type($FileName));
// if you are not allowed to use mime_content_type, then hardcode MIME type
// use application/octet-stream for any binary file
// use application/x-executable-file for executables
// use application/x-zip-compressed for zip files
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($FileName));
header("Content-Disposition: attachment; filename=\"$FileName\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
$fp = fopen($FileName,"rb");
fpassthru($fp);
fclose($fp);
}
?>
function SendFile($FileName)
{
//http://www.dynamicflow.nl/test/1.wmv";
//header("Content-Type: " . mime_content_type($FileName));
// if you are not allowed to use mime_content_type, then hardcode MIME type
// use application/octet-stream for any binary file
// use application/x-executable-file for executables
// use application/x-zip-compressed for zip files
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($FileName));
header("Content-Disposition: attachment; filename=\"$FileName\"");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
$fp = fopen($FileName,"rb");
fpassthru($fp);
fclose($fp);
}
?>
Mijn vragen zijn de volgende:
- Ik zou graag een naam mee geven aan het bestand. Dus de standaard naam die de gebruiker in zijn download scherm te zien krijgt aanpassen, hoe doe ik dit?
- Een groter probleem is dat in deze opzet de gebruiker niet verder kan surfen op de site terwijl de download bezig is. Pas als de download helemaal klaar is kan de gebruiker weer naar een andere pagina. Dit moet uiteraard beter geregeld worden maar hoe doe ik dit? Eerder werkte ik zonder iframe en liet ik de stream versturen vanuit de hoofdpagina (index.php) maar dan had ik precies hetzelfde probleem..
thanx!!
Geen iframes maar echte frames gebruiken.
Kuch of hellemaal geen frames. :P
Zoals ik al aangaf:
"Eerder werkte ik zonder iframe en liet ik de stream versturen vanuit de hoofdpagina (index.php) maar dan had ik precies hetzelfde probleem.. "