I would like to know how to force the download of a file, with some extension supported by Microsoft Word p>
I've searched a few times, tested the MIME types I found, like the ones in this Microsoft's list , but I did not succeed.
This code works to force you to download a file with .txt extension , but if you try with .doc , an error will occur when trying to open the word file downloaded.
header('Content-Type: application/octet-stream; charset=utf-8');
header('Content-disposition: attachment; filename="' . uniqid(time()) . '.txt";');
header('Content-Length: '. filesize($filename));
readfile($filename);
Complete example:
<?php
$file = tmpfile();
$content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent a vehicula mi, eu lacinia sem. Donec pellentesque egestas pulvinar. Donec ultricies risus vitae tellus tincidunt sagittis sed a odio. Curabitur vitae egestas metus, sit amet consectetur nisi. In pellentesque, mauris consequat ornare ullamcorper, mi nunc condimentum leo, ac feugiat lectus metus in nulla. Nulla ac vestibulum lacus. Donec sit amet felis pulvinar, vestibulum metus at, mattis lorem. Duis efficitur, velit vitae ullamcorper blandit, erat quam vehicula risus, dignissim volutpat nulla orci quis augue. Donec nisi velit, sagittis sed consectetur vitae, ornare eget turpis. Vivamus tincidunt, ligula sit amet aliquet iaculis, sapien risus rutrum purus, a sollicitudin nunc lacus sit amet purus. Pellentesque lacinia, tortor ut rhoncus molestie, eros nisl venenatis turpis, eget elementum quam ligula eget eros. Phasellus aliquam neque blandit scelerisque mattis. Maecenas purus erat, sodales at tincidunt eu, facilisis non velit. Quisque blandit arcu non dolor efficitur hendrerit.
Morbi ultricies arcu tempor, convallis sem non, faucibus risus. Praesent ut nunc sit amet quam placerat iaculis non at nibh. Maecenas imperdiet aliquam risus, ut sodales justo consequat id. Donec sollicitudin maximus cursus. Sed placerat, mauris a ornare hendrerit, ipsum enim ornare augue, non efficitur magna nulla auctor mi. Praesent sodales sed erat non luctus. Aliquam erat volutpat. Duis eget semper augue. Suspendisse pellentesque condimentum vehicula. Aliquam tempor arcu non leo vehicula, vitae ornare tortor sagittis. Vivamus posuere nibh massa, et dapibus nisl viverra quis. Phasellus tincidunt tellus id vehicula varius. Cras efficitur libero vitae accumsan tincidunt.
Nam molestie enim non nulla imperdiet interdum. Ut eget tortor venenatis, lobortis est a, consequat leo. Quisque consequat pellentesque velit eget vulputate. Integer pharetra felis sed hendrerit tristique. Donec tempus gravida diam, non maximus metus semper ac. Nulla ultrices egestas turpis. Fusce at dui ligula. Nam eget ligula sit amet quam tincidunt mollis. Mauris vitae dapibus lectus. Vestibulum id purus lacus. Proin tincidunt felis ac suscipit tristique.
Maecenas ullamcorper quis risus nec suscipit. Nam sodales tincidunt laoreet. Mauris interdum auctor massa, sit amet blandit nulla ullamcorper hendrerit. Curabitur ante libero, feugiat id iaculis quis, vestibulum ut eros. Morbi eleifend leo vitae mi laoreet eleifend. Ut vel accumsan mi. Cras sit amet bibendum tortor, nec vestibulum risus. Vestibulum suscipit rutrum turpis eu lacinia. Mauris porttitor maximus eros. Nullam augue arcu, sodales et porttitor eget, hendrerit eu odio. Vestibulum suscipit nisi sed commodo posuere. Proin volutpat nunc non neque accumsan posuere. Duis consequat, leo nec dictum sodales, neque leo congue nisl, eget consequat odio dolor eget nunc. Proin accumsan enim nisi.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam egestas hendrerit nisi, tristique pretium velit condimentum vel. Etiam sit amet purus nec risus finibus finibus auctor in metus. Integer nec risus mauris. Fusce aliquet egestas purus sed venenatis. Fusce non finibus sapien. Integer eu augue ligula. Sed urna sapien, hendrerit et pharetra sed, posuere eu elit. Sed a nibh id ipsum scelerisque iaculis. Vestibulum convallis sollicitudin erat ut blandit. Integer scelerisque odio vel nisl ullamcorper, vel feugiat nibh pretium. Sed et lectus vulputate, feugiat lacus vitae, lobortis sem.";
fwrite($file, $content);
fseek($file, 0);
$metadata = stream_get_meta_data($file);
$filename = $metadata["uri"];
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-disposition: attachment; filename="'. uniqid(time()) . '.docx";');
header('Content-Length: '. filesize($filename));
readfile($filename);