$CGI::DISABLE_UPLOADS = 1; $CGI::POST_MAX=1024 * 100; # max 100K posts if ($Q->cgi_error()) { $message = $Q->cgi_error()."<p>CGI Error"; &error_trap($message); } Could someone please tell me how to implement this when using CA?Setting the global variables can still be done in C::A. As for returning an error to the user, what did you try to do in C::A that didn't work? Mark
First I tried this at the top of my app:
use base 'CGI::Application';
use CGI::Application::Plugin::AutoRunmode;
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::Authentication;
use CGI::Application::Plugin::Forward;
$CGI::POST_MAX=1024 * 100; # max 100K posts
and this at the beginning of my upload sub routine:
sub prefs_upload_logo : RunMode {
my $self = shift;
my $Q = $self->query();
if ($Q->cgi_error()) {
$message = $Q->cgi_error()."<p>CGI Error";
&error_trap($message);
}
Then I tried this:
sub cgiapp_init {
my $self = shift;
CGI::POST_MAX=1024 * 100; # max 100K posts
# and this:
$CGI::POST_MAX=1024 * 100; # max 100K posts
# Set the CGI::Session cookie name
CGI::Session->name('Fox');
# Configure the session
$self->session_config(CGI_SESSION_OPTIONS => [ "driver:File",
$self->query, {Directory=>$SetUp::session_path} ],
DEFAULT_EXPIRY => "$SetUp::session_length" ,
COOKIE_PARAMS => {-path => '/',},
SEND_COOKIE => 1);
}
sub prefs_upload_logo : RunMode {
my $self = shift;
my $Q = $self->query();
if ($Q->cgi_error()) {
$message = $Q->cgi_error()."<p>CGI Error";
&error_trap($message);
}
# and this
sub prefs_upload_logo : RunMode {
my $self = shift;
if ($self->cgi_error()) {
$message = $self->query->cgi_error()."<p>CGI Error";
&error_trap($message);
}
# and even this.
sub prefs_upload_logo : RunMode {
my $self = shift;
if ($self->query->cgi_error()) {
$message = $self->query->cgi_error()."<p>CGI Error";
&error_trap($message);
}
and several other various combos of shots in the dark. After a bit I
went back to cpan and looked for an example but haven't found one yet.
It seems to me that putting "$CGI::POST_MAX=1024 * 100;" underneath my declared modules should stop uploads larger than 100k, even if I don't trap the error, but it does not.
Finally, I set up this test script and started uploading 100k files to it:
<code>
#!/usr/bin/perl
use CGI;
$CGI::DISABLE_UPLOADS = 1;
$CGI::POST_MAX=1024 * 10;
my $Q = new CGI;
# Trap post that are too large here...
if ($Q->cgi_error()) {
$message = $Q->cgi_error()."<p>CGI Error";
print $Q->header;
print $Q->start_html(-title => "Error");
print "$message";
print $Q->end_html;
exit
}
else {
print $Q->header;
print $Q->start_html(-title => "Hi Bill");
print "Hi Bill";
print $Q->end_html;
exit
}
</code>
when using only "$CGI::DISABLE_UPLOADS = 1;" it does not print the
error page, and it does not respond until after the file has finished
uploading.
using only "$CGI::POST_MAX=1024 * 10;" will print the error page, but it seems only after the file has been uploaded.
So, that's where I stand. (knee deep)
Kindest Regards,
--
Bill Stephenson
417-546-8390
---------------------------------------------------------------------
Web Archive: http://www.mail-archive.com/suppressed/
http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: suppressed
For additional commands, e-mail: suppressed
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.