将 curl 命令行转换为 Perl WWW::Curl 或 LWP
convert curl command line to Perl WWW::Curl or LWP
我正在尝试复制以下命令行 curl:
curl -F file=@myfile.csv 'https://myserver/api/import/data_save.html'
有人在 www::curl 或 lwp 中有例子吗?我整天都在尝试,此时甚至不值得我发布我的尝试,这只会让事情变得混乱。谢谢!!!
我想您是在问如何提交一个表单,该表单的文件字段名为 file
,其中填充了文件 myfile.csv
.
的内容
use LWP::UserAgent qw( );
my $ua = LWP::UserAgent->new();
my $response = $ua->post('https://myserver/api/import/data_save.html',
Content_Type => 'form-data',
Content => [
file => [ 'myfile.csv' ],
],
);
die($response->status_line)
if !$response->is_success;
$ua->post
的参数记录在 HTTP::Request::Common。
好吧,让我们解开 curl 命令的实际作用,因为 -F
意味着很多。
- 它将请求的HTTP方法设置为POST。
- 它将请求的内容类型设置为multipart/form-data。
- 它由一个 MIME 多部分请求正文组成,其中包含表示 "file" 输入是从名为 "myfile.csv" 的文件提供的表单元数据,以及包含实际文件内容的部分。
以下是使用 WWW::Curl 复制它的方法:
use WWW::Curl::Easy;
use WWW::Curl::Form;
my $curl = WWW::Curl::Easy->new;
my $form = WWW::Curl::Form->new;
$form->formaddfile('myfile.csv', 'file', "multipart/form-data");
$curl->setopt(CURLOPT_URL, 'https://myserver/api/import/data_save.html');
$curl->setopt(CURLOPT_HTTPPOST, $form);
my $response = $curl->perform;
但 LWP 可能更容易;看池上的回答。
我正在尝试复制以下命令行 curl:
curl -F file=@myfile.csv 'https://myserver/api/import/data_save.html'
有人在 www::curl 或 lwp 中有例子吗?我整天都在尝试,此时甚至不值得我发布我的尝试,这只会让事情变得混乱。谢谢!!!
我想您是在问如何提交一个表单,该表单的文件字段名为 file
,其中填充了文件 myfile.csv
.
use LWP::UserAgent qw( );
my $ua = LWP::UserAgent->new();
my $response = $ua->post('https://myserver/api/import/data_save.html',
Content_Type => 'form-data',
Content => [
file => [ 'myfile.csv' ],
],
);
die($response->status_line)
if !$response->is_success;
$ua->post
的参数记录在 HTTP::Request::Common。
好吧,让我们解开 curl 命令的实际作用,因为 -F
意味着很多。
- 它将请求的HTTP方法设置为POST。
- 它将请求的内容类型设置为multipart/form-data。
- 它由一个 MIME 多部分请求正文组成,其中包含表示 "file" 输入是从名为 "myfile.csv" 的文件提供的表单元数据,以及包含实际文件内容的部分。
以下是使用 WWW::Curl 复制它的方法:
use WWW::Curl::Easy;
use WWW::Curl::Form;
my $curl = WWW::Curl::Easy->new;
my $form = WWW::Curl::Form->new;
$form->formaddfile('myfile.csv', 'file', "multipart/form-data");
$curl->setopt(CURLOPT_URL, 'https://myserver/api/import/data_save.html');
$curl->setopt(CURLOPT_HTTPPOST, $form);
my $response = $curl->perform;
但 LWP 可能更容易;看池上的回答。