There are many applications where users want to use a piece of web based software to explore data sets - to research information and come up with tables of results and lists of data
which they then want to examine in more detail - explore further.
How do they do that further exploration - perhaps through another piece of software such as Microsoft Excel, or another spread sheet, rather than via a web application.
If you want to send out information to a browser that it's to save to disc, you can change the header from
Content-type: text/html
to
Content-type: application/octet-stream
and the browser will ask you how / where you wish to save the data; it's always done this way through the browser so that users aren't at risk of having servers quietly hide files on their systems without their knowledge.
Using a language such as PHP, you can not only change the content type header but also:
• reformat the data from HTML to something else
• set the name under which the file should be stored locally
There's an example (from the
PHP course concluded yesterday)
[source] and
[run it] on our site. The initial web based report that the page gives you an analysis of the most visited 1000 pages on our web site, ranked by popularity using a decaying moving average. That's a great report, but I might like to pull it into Excel, so the "download a copy" button close to the top of the page presents that same data, as an application/octet-stream, in a tab separated field format that's easy to import into the Microsoft (or other people's) spread sheet.
(written 2010-08-13, updated 2010-08-20)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H112 - PHP - Further Web Page and Network Handling [220] When to use Frames - (2005-02-19)
[314] What language is this written in? - (2005-05-17)
[345] Spotting a denial of service attack - (2005-06-12)
[356] Sudoku helper or sudoku cheat - (2005-06-23)
[372] Time calculation in PHP - (2005-07-08)
[376] What brings people to my web site? - (2005-07-13)
[410] Reading a news or blog feed (RSS) in your PHP page - (2005-08-12)
[425] Caching an XML feed - (2005-08-26)
[443] Server side scripting of styles to suit the browser - (2005-09-12)
[451] Accessing a page via POST from within a PHP script - (2005-09-26)
[484] Setting the file name for a downloaded document - (2005-11-03)
[537] Daily Image Santafied - (2005-12-22)
[542] Morning image, afternoon image - (2005-12-26)
[565] Using PHP to output images, XML, Style sheets, etc - (2006-01-15)
[603] PHP - setting sort order with an associative array - (2006-02-13)
[675] Adding PHP tags to an old cgi program - (2006-04-08)
[767] Finding the language preference of a web site visitor - (2006-06-18)
[789] Hot answers in PHP - (2006-07-02)
[847] Image maps for navigation - a straightforward example - (2006-08-28)
[904] Of course I'll tell you by email - (2006-10-25)
[936] Global, Superglobal, Session variables - scope and persistance in PHP - (2006-11-21)
[1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
[1114] PHP Image upload script - (2007-03-21)
[1183] Improving searches - from OR to AND? - (2007-05-11)
[1187] Updating a page strictly every minute (PHP, Perl) - (2007-05-14)
[1210] PHP header() function - uses and new restrictions - (2007-05-30)
[1355] .php or .html extension? Morally Static Pages - (2007-09-17)
[1379] Simple page password protection - PHP - (2007-10-04)
[1485] Copyright and theft of images, bandwidth and members. - (2007-12-26)
[1495] Single login and single threaded models - Java and PHP - (2008-01-04)
[1496] PHP / Web 2 logging - (2008-01-06)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1515] Keeping staff up to date on hotel room status - (2008-01-22)
[1518] Downloading data for use in Excel (from PHP / MySQL) - (2008-01-25)
[1549] http, https and ajp - comparison and choice - (2008-02-22)
[2632] Shipping a test harness with your class in PHP - (2010-02-12)
[2679] How to build a test harness into your PHP - (2010-03-16)
[2729] Uploading a document or image to its own URL via a browser - (2010-04-18)
[3036] Sending out an email containing HTML from within a PHP page - (2010-11-07)
[3432] 3 digit HTTP status codes - what are they, which are most common, which should be a concern? - (2011-09-11)
[3540] Easy session example in PHP - keeping each customers data apart - (2011-12-06)
[3568] Telling which ServerAlias your visitor used - useful during merging domains - (2012-01-04)
[3918] Multiple page web applications - maintaining state - PHP - (2012-11-10)
[4070] Passing variable between PHP pages - hidden fields, cookies and sessions - (2013-04-26)
[4483] Moving from mysql to mysqli - simple worked example - (2015-05-03)
A207 - Web Application Deployment - HTTP [1378] Etag in http headers - what is it? - (2007-10-03)
[1503] Web page (http) error status 405 - (2008-01-12)
[2321] Uploading and Downloading files - changing names (Perl and PHP) - (2009-08-04)
[2596] Http protocol - what does a web server send - (2010-01-24)
[2738] What is all this SESSION stuff about? (PHP) - (2010-04-25)
Some other Articles
Getting the OO design write - with PHP a exampleDoes copying a variable duplicate the contents?Sorting - naturally, or into a different orderLondon to Calne, Corsham, Melksham, Bradford-on-Avon, Chippenham by public TransportDownloading a report from the web for further local analysisUpload Image, Store in database, redisplay in browser. PHP and MySQLTesting the robustness of our hotel and training systems - holiday and sickness timesLooking up a value by key - associative arrays / Hashes / DictionariesOlder picture.Six languages in one file - an HTML++ web page