in reply to Re: Downloading things from a database
in thread Downloading things from a database

Note that using the generic application/octet-stream MIME type for information you want the browser to simply save and not render won't always work under some (all?) versions of Internet Explorer. IE has a tendency of taking the MIME type with a grain of salt and doing further examination of the file's extension to determine whether or not IE should attempt to render the content internally. MS Office files (e.g. .doc) are notoriously difficult to bring up a "Save As" dialog, because some versions of IE insist on rendering it in an embedded MS Word window.
  • Comment on RE: Re: Downloading things from a database

Replies are listed 'Best First'.
Re^3: Downloading things from a database
by Anonymous Monk on Jul 22, 2004 at 12:29 UTC
    What about very large files? As I see in my tests, this type of download use a lot of memory. Is there a was to do this without using a lot of system resources? Thanks
      Yes, this would take a lot of memory if you read in a large file to a string first.
      To force download of a large file, just print the file as you read it in like this:

      if(-e $file) { if(open(SESAME, "< $file")) { print "Content-Disposition: attachment; filename=$file\n"; print "Content-Type: application/octet-stream\n"; print "Content-Length: " . (-s $file) . "\n\n"; while(<SESAME>) { print $_; } close(SESAME); } else { print "Content-Type: text/html\n\nError: Could not read from f +ile\n"; } } else { print "Content-Type: text/html\n\nError: invalid filename\n"; }