How to force file download with PHP

后端 未结 11 1544
被撕碎了的回忆
被撕碎了的回忆 2020-11-21 23:13

I want to require a file to be downloaded upon the user visiting a web page with PHP. I think it has something to do with file_get_contents, but am not sure how

11条回答
  •  长情又很酷
    2020-11-21 23:23

    You can stream download too which will consume significantly less resource. example:

    $readableStream = fopen('test.zip', 'rb');
    $writableStream = fopen('php://output', 'wb');
    
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="test.zip"');
    stream_copy_to_stream($readableStream, $writableStream);
    ob_flush();
    flush();
    

    In the above example, I am downloading a test.zip (which was actually the android studio zip on my local machine). php://output is a write-only stream (generally used by echo or print). after that, you just need to set the required headers and call stream_copy_to_stream(source, destination). stream_copy_to_stream() method acts as a pipe which takes the input from the source stream (read stream) and pipes it to the destination stream (write stream) and it also avoid the issue of allowed memory exhausted so you can actually download files that are bigger than your PHP memory_limit.

提交回复
热议问题