Serving Query Results for Download
Problem
You want to send database information to a browser for downloading rather than for display.
Solution
Unfortunately, there’s no good way to force a download. A
browser will process information sent to it according to the
Content-Type:
header
value, and if it has a handler for that value, it will treat the
information accordingly. However, you may be able to trick the browser
by using a “generic” content type for which it’s unlikely
to have a handler.
Discussion
Earlier sections of this chapter discuss how to incorporate the
results of database queries into web pages, to display them as
paragraphs, lists, tables, or images. But what if you want to produce
a query result that the user can download to a file instead? It’s not
difficult to generate the response itself: send a Content-Type:
header preceding the
information, such as text/plain
for
plain text, image/jpeg
for a JPEG
image, or application/pdf
or application/msexcel
for a PDF or Excel document. Then send a blank line and the content of the query result. The problem is that there’s no way to force the browser to download the information. If it knows what to do with the response based on the content type, it will try to handle the information as it sees fit. If it knows how to display text or images, it will. If it thinks it’s supposed to give a PDF or Excel document to a PDF viewer or to Excel, it will. Most browsers enable the user to select a download explicitly (for example, by right-clicking ...
Get MySQL Cookbook, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.