CGI-Easy-SendFile

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

NAME

    CGI::Easy::SendFile - send files from CGI to browser

VERSION

    This document describes CGI::Easy::SendFile version v2.0.1

SYNOPSIS

        use CGI::Easy::SendFile qw( send_file );
    
        my $r = CGI::Easy::Request->new();
        my $h = CGI::Easy::Headers->new();
    
        my $data = send_file($r, $h, '/path/file.zip');
        print $h->compose();
        print ${$data};
    
        # -- send "file" generated in memory instead of real file
        my $dynamic_file = '…some binary data…';
        my $data = send_file($r, $h, \$dynamic_file);
    
        # -- simulate static image served by web server 
        #    (without "download file" dialog popup in browser)
        my $data = send_file($r, $h, 'avatar.png', {
                type    => 'image/png',
                cache   => 1,
                inline  => 1,
        });

DESCRIPTION

    This module provide single function, which helps you prepare CGI reply
    for sending file to browser.

EXPORTS

    Nothing by default, but all documented functions can be explicitly
    imported.

INTERFACE

 send_file

        $data = send_file( $r, $h, '/path/file.zip' );
        $data = send_file( $r, $h, '/path/file.zip', \%opt );
        $data = send_file( $r, $h, \$dynamic_file );
        $data = send_file( $r, $h, \$dynamic_file, \%opt );

    Prepare HTTP headers and content for CGI reply to send file.

        $r      CGI::Easy::Request object
        $h      CGI::Easy::Headers object
        $file   STRING (file name) or SCALARREF (file contents)
        %opt
          {type}    STRING (default "application/x-download")
          {range}   BOOL (default TRUE if $file is STRING,
                                  FALSE if $file is SCALARREF)
          {cache}   BOOL (default FALSE)
          {inline}  BOOL (default FALSE)

    {type}

      Custom value for 'Content-Type' header. These are equivalents:

          $data = send_file($r, $h, $file, {type=>'image/png'});
      
          $data = send_file($r, $h, $file);
          $h->{'Content-Type'} = 'image/png';

    {range}

      Enable/disable support for sending partial file contents, if
      requested (this is usually used by file downloader applications to
      fetch files faster using several simultaneous connections to download
      different file parts). You shouldn't enable this option for dynamic
      files generated by your CGI if contents of these files may differ for
      different CGI requests sent by same user to same url.

      If your web server configured to gzip CGI replies, it will disable
      this feature. To make this feature working disable gzip in web server
      (usually by adding  SetEnv no-gzip  in  .htaccess  file).

      When enabled and user requested partial contents will change 'Status'



( run in 1.278 second using v1.01-cache-2.11-cpan-364913b4093 )