Search code examples
phpdownloadhttp-headerscross-browserfile-type

PHP file download not recognizing file type in Chrome and Edge


I'm trying to create a simple download page, which currently works in Firefox but not entirely in Chrome and Edge. The file to download is an mp3, located in a private directory on the server.

When I download the file in Firefox it works as intended. If I download it using Chrome or Edge the file still downloads, but it doesn't recognize the file type and just saves it as an extensionless file.
If I add the .mp3 extension manually to the downloaded file it's fine and I can play the track.

These are the headers:

header("Cache-Control: private"); 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Length: " . filesize($filePath)); 

//Force download
readfile($filePath);

Changing the 'Content-type' to 'audio/mpeg' also doesn't work.


Solution

  • can you try:

    header("Content-Disposition: attachment; filename=\"$title\".mp3");
    

    to see if the title does not contain the extension