[prev] [thread] [next] [Date index for 2004/12/19]
Completing more my question:
---------------------------
PerlTransHandler +Blogum::BlogumURI
---------------------------
in httpd.conf
The html form, printed by javascript
---------------------------
..
var form_e =3D document.createElement('form');
form_e.setAttribute('ENCTYPE','multipart/form-data');
..
with several inputs (hidden, text and one "file")
---------------------------
The submit action is catched by BlogumURI.pm
---------------------------
..
} elsif ($uri =3D~ /$cri_newArticle/) { # URI is recognised
my $url;
Blogum::NewsArticle -> new_article($r,\$url);
$uri =3D $1.$url;
$redirected++;
$apache->err_headers_out->{'Location'} =3D "$uri";
}
..
$r->filename($r->document_root . $r->uri);
if ($redirected) {return Apache::HTTP_MOVED_TEMPORARILY;}
else {return Apache::DECLINED;}
---------------------------
NewsArticle.pm "new_article" method calls News.pm that calls
---------------------------
$info =3D {};
$Generic -> info($info);
---------------------------
And finally, it is the info method that tries to parse the info (inside Generic.pm)
---------------------------
sub info {
my ($self,$info) =3D @_;
no warnings;
my $apache_headers =3D$apache->headers_in;
$info->{father} =3D$apache->hostname;
$info->{file} =3D$apache->filename;
$info->{name} =3D$apache_headers->{'Referer'};
$info->{content} =3D$apache_headers->{'Content-Type'};
if ($apache->method eq 'POST') {
if ($info->{content} =3D~ /.*multipart.*/) {
my $mm =3DApache::Request->new($apache,POST_MAX=3D>50000); #50k max
my $uploads =3D$mm->upload();
my $table =3D$mm->param(); #en teoria els uploads ja no estan
warn $uploads.' '.%$uploads;
warn $table.' '.%$table;
foreach (keys %$uploads) {
$uploads->{$_}->slurp(my $temp);
warn 'IMAGE: '.$_.' - '.$uploads->{$_}.' ? '.$uploads->{$_}->name.' '.
$uploads->{$_}->filename.' '.$uploads->{$_}->size.' '.$uploads->{$_}->type;
}
foreach (keys %$table){
$info->{query} .=3D $_.'=3D'.$table->{$_}.'&';
warn $_.' =3D '.$table->{$_};
}
} else {
if ($apache_headers->{'Content-length'} < 10000000) {
$apache ->read($info->{query},$apache_headers->{'Content-length'});
}
}
} elsif ($apache->method eq 'GET') {
$info->{query} =3D$apache->args;
}
$info->{ip} =3D$apache->connection->remote_ip();
$info->{cookie} =3D$apache_headers->{'Cookie'};
}
---------------------------
Now reading rightly the content-type (lapsus:) the caret is inside the multipart block.
($apache is $r and is a global var for all the package).
What i read in error.log is
---------------------------
Apache::Upload::Table=3DHASH(0x10dd168) 0 at f:\tools\apache2/lib/perl/Blogum/Generic.pm
line 207.
Apache::Request::Table=3DHASH(0x10dab5c) 6 at f:\tools\apache2/lib/perl/Blogum/Generic.pm
line 208.
user =3D l at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
subject =3D l at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
source =3D l at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
image =3D aaaUntitled-1.gif at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
directory =3D news_st at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
body =3D =F1li at f:\tools\apache2/lib/perl/Blogum/Generic.pm line 218.
---------------------------
(values of input are nonsense)
So i'm reading right the text values, but no news about my file (from which i have the
filename).
PD I've tried to be the clearest possible, and i also offer my sympathy :D.
Please i will put more code if you ask for.
-------------------------------------------
>"eps com estem" <a
href=3D"javascript:sendMsg('<ggerard@xxxxxxx.xxx>');"><ggerard@xxxxxxx.xxx></a> writes:
>> if ($apache->content_type() eq 'multipart/form-data') {
>No. $r->content_type() represents the response (outgoing) header,
>not the request (incoming) header:
> <a
href=3D"/app/message?l=3Des&o=3D8&url=3Dhttp%3A%2F%2Fperl%2Eapache%2Eorg%2Fdocs%2F2%2E0%2Fapi%2FApache%2FRequestRec%2Ehtml%23C%5Fcontent%5Ftype%5F"
target=3D"_blank">http://perl.apache.org/docs/2.0/api/Apache/RequestRec.html#C_content_type_</a>
>>
>> While i'm able to read all text params, there are no entries in $uploads.
>No clue. I'd like to help, but puzzling out the problem
>from your code snippets isn't sufficient enticement. Please
>post full details, including a complete package+handler with
>configuration info and error-log output. Maybe it's an apreq
>bug, maybe it isn't. But if I can't reproduce your problem
>locally, there's not much I can do other than offer you my
>sympathy.
>--
>Joe Schaefer
---------------------------------------------------------
Esta Navidad, sé más original ¿Te atreves a enviar una postal con tu voz? http://greetingmania.ya.com
Ya.com ADSL Router Wi-Fi: Sólo 29,90 €/mes + IVA*. Router + Antivirus y firewall ¡Gratis! http://acceso.ya.com/adsl/256router
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
|
Re: Re: libapreq2 upload question
|
|
Re: libapreq2 upload question
|
Generated at 12:48 on 22 Feb 2005 by mariachi v0.52