Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^7: Download big file in chunks with plack response

by Thenothing (Acolyte)
on Apr 26, 2021 at 09:33 UTC ( #11131725=note: print w/replies, xml ) Need Help??


in reply to Re^6: Download big file in chunks with plack response
in thread Download big file in chunks with plack response

Hello there kikuchiyo
A big thank you for you testing, now the code is working

The problem was, I was using plackup -L Shotgun to run the psgi app, and the error I was getting was.

Magic number checking on storable string failed at /usr/lib/x86_64-linux-gnu/perl/5.22/Storable.pm line 420, at /usr/local/share/perl/5.22.1/Plack/Loader/Shotgun.pm line 35. Sometimes I get the error memory

But when I change to just plackup, everything works
here is the final code:

use strict; use warnings; ####use Plack::Response; # doesn't seem to support streaming response use Path::Tiny; use File::MimeInfo; my $app = sub { my $env = shift; my $path_file = 'win.iso'; my $content_type = mimetype($path_file); $content_type = 'application/octet-stream' if not defined $content +_type; require File::Spec::Unix; my $basename = $path_file; $basename =~ s|\\|/|g; $basename = ( File::Spec::Unix->splitpath($basename) )[2]; $basename =~ s|[^\w\.-]+|_|g; return sub { my $responder = shift; my $writer = $responder->( [ 200, [ 'Content-Type' => $content_type, 'Content-Disposition' => qq[attachment; filename="$ +basename"], ] ] ); open (FILE, "< $path_file") or die "can't open $path_file: $!" +; binmode FILE; local $/ = \102400; while (<FILE>) { $writer->write($_); } $writer->close(); close FILE; } }
again thank you so much for your time and your code

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11131725]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (2)
As of 2022-10-05 17:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My preferred way to holiday/vacation is:











    Results (24 votes). Check out past polls.

    Notices?