Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force download mp4 files

I want to force the user tho download a youtube video. For example this url. I download the video and I can play the original video, but even the length/size of video is the same I cant play it when is force_downloaded.

function force_download($file,$video_url)
{

  $video_data = file_get_contents($video_url);
  file_put_contents($file, $video_data);

  if(isset($file) && file_exists($file))
  {
    header('Content-length: ' .  filesize($file));
    header('Content-type: application/octet-stream');
    header('Content-Disposition: attachment; filename= "' . $file . '"');

    readfile($file);
  }
}

force_download('youtube.mp4',$video_url);
like image 640
Ben Avatar asked Nov 20 '25 01:11

Ben


1 Answers

If you can use htaccess...

<FilesMatch "\.(mp4|MP4)">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

I use this to force PDFs to download as well. Works great!

Here is another stack question regarding forcing download with PHP... Does essentially the same thing as the htaccess I have written above. Setting the content-disposition to attachement is key.

How to force file download with PHP

EDIT: hrmm... but you have already done something similar which isn't working... See if you can get the htaccess to work with what you're trying to do I guess.

like image 68
Eric Avatar answered Nov 21 '25 14:11

Eric



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!