Danikadain
Danikadain

Reputation: 35

Force download FLV file not working in PHP

am integrating force download using php. when i download the flv files and open in video players its shows error.

$Filename = '/* file name */'; 
    header('Content-Description: File Transfer');
    header("Content-type: video/flv");
    header("Cache-Control: no-cache");
    header("Content-Transfer-Encoding: binary");
    header('Content-Disposition: attachment; filename=test.flv' );
    header("Pragma: no-cache");
    header('Content-length: '.filesize($Filename));
    $hFPi = fopen ("$Filename", "rb");
    while (!feof($hFPi))
    {
        $sBuf = fread ($hFPi, filesize($Filename) );
        echo $sBuf;
    } 
    fclose ($hFPi);

Please help..

Upvotes: 1

Views: 1627

Answers (4)

Sardar Younus
Sardar Younus

Reputation: 21

This code working great to download mp4, flv, mpeg file from my end. Here: $file_name = The Downloaded video file name, $file_path = Base Path of the original file in the server.

header('Pragma: public'); // required   
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file_name");
header("Content-Type: video/mpeg");
header("Content-Transfer-Encoding: binary");

header('Cache-Control: must-revalidate, post-check=0, pre-check=0', false);
header('Cache-Control: private', false); // required for certain browsers  

ob_clean();
flush();
readfile($file_path);
exit;

Upvotes: 2

Prem
Prem

Reputation: 707

$Filename = '/* file name */'; 
$path = "../../upload/";
$file = $path.$filename;
savedata1();
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/flv");
header("Content-Transfer-Encoding: binary");
readfile($file);

this will help u. Try it in ur code and u will find ur answer...

Upvotes: 2

rws907
rws907

Reputation: 777

This is what I do to force a download of a file (for me it's ZIP but it should work for any file type though). Keep in mind you'll have to tweak it as I store my db information differently than you probably do.

header("Content Description: File Transfer");
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must revalidate");
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=".basename(".".$filepath)."");
header("Content-Length: " . filesize(".".$filepath));
header("Content-Transfer-Encoding: binary");
ob_clean();
flush();
readfile(".".$filepath);

Upvotes: 0

Bajrang
Bajrang

Reputation: 8629

Try

           $Filename = 'test.flv'; 
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Content-type: video/flv");

            header("Content-Disposition: attachment; filename=".basename($filename).";" );
            header("Content-Transfer-Encoding: binary");
            readfile("$Filename "); 

Upvotes: 0

Related Questions