Only send back one header at a time. Test for request_method eq to POST and then send back the file.
Like the following:
#!/usr/bin/perl -w use CGI qw(:standard); use strict; if (request_method() ne 'POST') { print header; print start_html('Download'), h1('Download'), start_form, p, "Feet? ", textfield(-name => 'feet', -size => 5), "Inches? ", textfield(-name => 'inches', -size => 5), p, submit(-value => 'Create File'), end_form, hr, end_html(); } else { my $feet = param('feet'); my $inches = param('inches'); my $filename = param('feet') . param('inches') . '.txt'; my $tape = <<"END_FILE"; It is $feet ft. $inches in. END_FILE print "Content-Type: application/octet-stream; name=$filename\n"; print "Content-Disposition:attachment; filename=$filename\n\n"; print $tape; }
Also, please use strict.
In reply to Re: Web form creates txt file and downloads scalar as a file
by wind
in thread Web form creates txt file and downloads scalar as a file
by redmustang
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |