Respuesta multiparte HTTP usando Perl o PHP

¿Es posible proporcionar una respuesta HTTP multiparte (usando Perl / PHP) tal como una solicitud multiparte? El escenario es como, me gustaría proporcionar una URL que toma un parámetro para EmployeeID, y a cambio la respuesta debe consistir en la foto del empleado, la última nómina e información como el nombre, la edad y la dirección. El extremo receptor no es un navegador, pero será un progtwig que obtenga esta respuesta y la procese más adelante. ¿Alguna idea de como hacerlo?

Para dar más información sobre mi pregunta anterior, tengo que proporcionar una URL a mi amigo que recibirá la respuesta mediante progtwigción. Por ejemplo, (en Perl):

$response = $ua->request($my_url) 

Se supone que mi aplicación responde no solo con datos, sino también con archivos. Me estaban pidiendo que lo hiciera para devolver respuestas en varias partes.

No sabía cómo comenzar con la encoding en sí misma. La búsqueda de Google en “respuesta de varias partes” no me devolvió páginas con las que puedo aprender y comenzar. Sin embargo, el comentario de Chansen fue muy útil, así como su código de ejemplo https://gist.github.com/1391017 . Muchas gracias.

Estoy presentando mi https://gist.github.com/1391017 original como respuesta.

 #!/usr/bin/perl use strict; use warnings; use HTTP::Response; my $response = HTTP::Response->new( 200, 'OK', [ 'Content-Type' => 'multipart/form-data' ] ); $response->protocol('HTTP/1.1'); $response->date(time); $response->server('Foo/1.0'); my $name = HTTP::Message->new([ 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Disposition' => 'form-data; name="name"', ], 'John Doe'); $response->add_part($name); my $note = HTTP::Message->new([ 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Disposition' => 'form-data; name="note"', ], <<'NOTE'); Resources: o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Message.pm o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Response.pm o http://tools.ietf.org/html/rfc2388 o http://tools.ietf.org/html/rfc2616 NOTE $response->add_part($note); my $blob = HTTP::Message->new([ 'Content-Type' => 'application/octet-stream', 'Content-Disposition' => 'form-data; name="blob"; filename="blob.bin"', ]); $blob->add_content('a chunk'); $blob->add_content(' of data'); $response->add_part($blob); print $response->as_string; 

Salida:

 HTTP/1.1 200 OK Date: Thu, 24 Nov 2011 10:03:25 GMT Server: Foo/1.0 Content-Type: multipart/form-data; boundary=xYzZY --xYzZY Content-Type: text/plain; charset=UTF-8 Content-Disposition: form-data; name="name" John Doe --xYzZY Content-Type: text/plain; charset=UTF-8 Content-Disposition: form-data; name="note" Resources: o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Message.pm o http://search.cpan.org/dist/HTTP-Message/lib/HTTP/Response.pm o http://tools.ietf.org/html/rfc2388 o http://tools.ietf.org/html/rfc2616 --xYzZY Content-Type: application/octet-stream Content-Disposition: form-data; name="blob"; filename="blob.bin" a chunk of data --xYzZY--