phpapachex-sendfile

Modify filename for file downloaded via mod_xsendfile


I'm using mod_xsendfile to download / show files on a webpage. It works fine, I'm just wondering if there is any way I can modify filenames before sending them?

I'm guessing I would have to copy/rename the file temporarily to manage this? Which might not be feasible for large files (due to timeouts, or at least waiting times).

Reason I'm asking is that I have publicly shared files, which are prefixed with the user that shared the file's name - so instead of videofile.mp4 it will say username__videofile.mp4- not a big deal, it's not like the downloader doesn't already know who shared the file, it would just make it slightly easier if the filename was only the original filename.

I'm guessing a temp-copy/rename is the only way to do this?


Solution

  • There is no need to do temp copy or rename. Just do this:

    header("X-Sendfile: {$sourceFilename}");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"{$outFilename}\"");
    

    Set $outFilename to whatever name you want. It works with Apache 2.4.9.