From this Microsoft article:

When you serve a document from a Web server, you might want to immediately prompt the user to save the file directly to the user's disk, without opening it in the browser. However, for known MIME (Multipurpose Internet Mail Extensions) types such as Microsoft Word ("application/ms-word"), the default behavior is to open the document in Internet Explorer.

You can use the content-disposition header to override this default behavior. Its format is:


Content-disposition: attachment; filename=fname.ext 

You can also read RFC 1806 which may give you more information. According to the RFP, you don't specify the filename with an "inline" content-disposition. Further, "inline" is designed to render the data directly rather than prompt for a dialog box, which is what your issue appears to be. I'd try the following untested code (note that I am passing the MIME type rather than hard-coding it):

sub download_file { my ( $filename, $mime ) = @_; if ( ! -e $filename ) { croak "$filename does not exist": } my $filesize = -s $filename; # print full header print "Content-disposition: attachment; filename=$filename\n"; print "Content-Length: $filesize\n"; print "Content-Type: $mime\n\n"; # open in binmode open READ, "< $filename" or croak "Cannot open $filename for r +eading: $!"; binmode READ; # stream it out binmode STDOUT; { local $/; print <READ>; } close(READ); # should always return true return(1); }

Cheers,
Ovid

Vote for paco!

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.


In reply to (Ovid) Re: Web Initiated File Download by Ovid
in thread Web Initiated File Download by THRAK

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.