perl中的多部分编码文件内容

multipart encoded file content in perl

我想从 Perl 向 REST API 服务发出 POST 请求。作为 POST 表单参数,服务需要一个多部分编码文件。

use HTTP::Request::Common;
use LWP::UserAgent;

my $file="/path/to/file";
my $REST_URL = "/path/to/REST/service";
my $ua = LWP::UserAgent->new;
my $response= $ua->post($REST_URL, ['file' => $file]);

上面的代码是我写的。但显然 REST 服务器无法理解 POST 请求,因为我只将文件路径发送到 REST 服务,而不是多部分编码的文件内容。谁能告诉我如何制作文件多部分编码并将其作为 POST 请求发送到要求多部分编码文件作为表单参数的 REST 服务?

作为旁注,我实际上想编写下面 Python 代码的等效 Perl 代码。

REST_URL = "/path/to/REST/service"
SAMPLE_FILE = "/path/to/file"

with open(SAMPLE_FILE, "rb") as sample:
   multipart_file = {"file": ("temp_file_name", sample)}
   request = requests.post(REST_URL, files=multipart_file)

但是,由于我对 Python 的了解有限,我没看懂 multipart_file = {"file": ("temp_file_name", sample)} 这行。我认为,对这条线的确切作用的解释也会对我有所帮助。

如模块文档中所述HTTP::Request::Common

$ua->post($REST_URL,
  Content_Type => 'form-data',
  Content      => [
    file => [$file]
  ],
);