[Catalyst] Where is the form field lost?
Octavian Rasnita
orasnita at gmail.com
Sun Jan 24 16:31:26 GMT 2010
Hi Bill,
From: "Bill Moseley" <moseley at hank.org>
> On Sun, Jan 24, 2010 at 7:03 AM, Octavian Rasnita
> <orasnita at gmail.com>wrote:
>
> I need to know if the form didn't have a file upload field, or if it had
> it
>
> but no file was uploaded.
>
>
> Give your upload field(s) a name like "upload_1" and then see if it
> exists
> in uploads.
I gave it the name "file", but if the file is not uploaded, it doesn't
appear in uploads(). (I hope "file" is OK as a name, no?)
> Can you give me a hint where I should look for finding where the empty
> file
>> upload field is skipped if it is empty?
>>
>
> That's how HTTP::Body works. If there's a filename, which there is with
> upload fields, but the file name is empty, then it's skipped.
Aha, so I should look better in HTTP::Body.
Is there a reason it does that? (Leaves alone all other empty form fields
but deletes the empty file upload fields?)
> if ( exists $part->{filename} ) {
> if ( $part->{filename} ne "" ) {
> $part->{fh}->close if defined $part->{fh};
>
> delete @{$part}{qw[ data done fh ]};
>
> $self->upload( $part->{name}, $part );
> }
> }
>
> BTW -- I think that delete of "fh" should not happen (and the temp file
> should be set to unlink on destroy). Otherwise you can end up with
> orphaned
> temp files.
And I think it should also returned the empty file upload field as an empty
upload field, and not delete it at all.
I think this change cannot cause errors in other places.
Octavian
More information about the Catalyst
mailing list