php - 使用 Perl 或 PHP 的 HTTP 多部分响应

标签 php perl http response multipart

是否可以像多部分请求一样提供 HTTP 多部分响应(使用 Perl/PHP)?场景是这样的,我想提供一个 URL,它接受一个 EmployeeID 参数,作为返回,响应应该包括员工的照片、最新的工资单和姓名、年龄和地址等信息。接收端不是浏览器,而是一个获取此响应并稍后处理它们的程序。关于如何执行此操作的任何想法?

为了提供关于我的上述问题的更多信息,我必须向我的 friend 提供一个 URL,他将以编程方式接收响应。例如(在 Perl 中):

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

我的应用程序应该不仅响应数据,还响应文件!我被要求返回多部分响应。

我不知道如何从编码本身着手。谷歌搜索“多部分响应”没有返回我可以学习和开始的页面。然而,chansen 的评论以及他的代码示例非常有帮助 https://gist.github.com/1391017 .非常感谢。

最佳答案

我摆出我的原图 https://gist.github.com/1391017作为回应。

#!/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;

输出:

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--

关于php - 使用 Perl 或 PHP 的 HTTP 多部分响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246364/

相关文章:

java - 使用 php 和 android 将小尺寸图像上传到服务器

perl - 在不使用 require 的情况下确定模块的绝对路径

apache - Apache 上的 CoAP,CoAP Web 服务

c# - 在 C# 中重用与 HttpWebRequest 的连接

node.js - 使用 Node 限制对第 3 部分 Apis 的请求

javascript - 解析 JSON 文件以生成并返回另一个包含所需数据的 JSON

php - Symfony2 : transformationFailure "Compound forms expect an array or NULL on submission."

php - 使用 ASIFormDataRequest 进行简单的 mysql 查询

perl - 如何在我的 Pearl 源代码中嵌入汉字?

perl - 如何避免存储过多的 session ?