NAME
CGI::Tiny::Multipart - Tiny multipart/form-data parser
SYNOPSIS
use CGI::Tiny::Multipart qw(extract_multipart_boundary parse_multipart_form_data);
my $boundary = extract_multipart_boundary($content_type) // die "Failed to parse multipart boundary";
my $parts = parse_multipart_form_data($fh, $content_length, $boundary) // die "Malformed multipart/form-data content";
DESCRIPTION
CGI::Tiny::Multipart is a tiny multipart/form-data parser for CGI::Tiny.
FUNCTIONS
The following functions are exported on request.
extract_multipart_boundary
my $boundary = extract_multipart_boundary($content_type);
Extracts the multipart boundary from a Content-Type
header. Returns undef
if the boundary was not found.
parse_multipart_form_data
my $parts = parse_multipart_form_data($fh, $content_length, $boundary, \%options);
my $parts = parse_multipart_form_data(\$bytes, length($bytes), $boundary, \%options);
Parses multipart/form-data
request content into an ordered array reference, or returns undef
if the request content is malformed and cannot be parsed. The input parameter may be a filehandle, which will have binmode
applied to remove any translation layers, or a scalar reference to a string containing the request content. Bytes will be read from the input up to the specified $content_length
.
The following options may be specified in an optional hashref parameter:
- buffer_size
-
buffer_size => 262144
Buffer size (number of bytes to read at once) for reading the request body from an input filehandle. Defaults to 262144 (256 KiB). A value of 0 will use the default value.
- tempfile_args
-
tempfile_args => [TEMPLATE => 'tempXXXXX', SUFFIX => '.dat']
Arguments to pass to the File::Temp constructor when creating tempfiles for file uploads. By default no arguments are passed.
- all_tempfiles
-
all_tempfiles => 1
If set to a true value, all form field values will be stored in tempfiles instead of memory, not just file uploads.
- no_tempfiles
-
no_tempfiles => 1
If set to a true value, all form field values will be stored in memory, even file uploads.
- discard_files
-
discard_files => 1
If set to a true value, file upload field contents will be discarded, and neither
content
norfile
will be provided.
Form fields are represented as hash references containing:
- headers
-
Hash reference of part headers. Header names are represented in lowercase.
- name
-
Form field name from
Content-Disposition
header, undecoded. - filename
-
Filename from
Content-Disposition
header if present, undecoded. - size
-
Size of part contents in bytes.
- content
-
Part contents as undecoded bytes, for parts without a defined
filename
, or all parts if theno_tempfiles
option was passed. File uploads are stored in a temporaryfile
instead by default. - file
-
File::Temp object referencing temporary file containing the part contents, for parts with a defined
filename
, or all parts if theall_tempfiles
option was passed.
BUGS
Report any issues on the public bugtracker.
AUTHOR
Dan Book <dbook@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2021 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)