我正在尝试从CLI编写一个Perl Mojolicious请求.我想将文件作为参数传递给此请求.以下是我到目前为止所尝试的内容,但无济于事.
下面的例子是我的工作正常.
curl (working): curl -X POST "http://localhost:3000/uploadtest.pl/status?Token=6d949625-2f07-1e7a-d57a-de0fa949035d"
Mojolicious (working): perl ./uploadtest.pl get -v -M POST /status?"Token=3780e99a-fc2c-54e5-2c31-417f945c1792"
Run Code Online (Sandbox Code Playgroud)
下面是我被卡住的例子,因为下面的perl脚本将文件作为输入[文件上传]:
curl (working): curl -X POST -F Input_File=@d:/xml/test.xml "http://localhost:3000/uploadtest.pl/upload?Input_Type=XML
Mojolicious (not working): perl ./uploadtest.pl get -v -M POST /upload?"Input_Type=XML&Input_File=d:/xml/test.xml"
Run Code Online (Sandbox Code Playgroud)
如果有人帮我解决这个问题,那将会很有帮助.
#uploadtest.pl
use Mojolicious::Lite;
# Upload form in DATA section
get '/' => 'form';
# Check status
post '/status' => sub {
my $self = shift;
my $Token = $self->param('Token');
$self->render(text => "In process: $Token");
};
# Multipart upload handler
post '/upload' => sub {
my $self = shift;
# Process uploaded file
my $Input_File = $self->param('Input_File');
my $Input_Type = $self->param('Input_Type');
my $size = $Input_File->size;
my $name = $Input_File->filename;
my $upload = $self->req->upload('Input_File');
$upload->move_to("d:/xml/$name"); #move location
$self->render(text => "Thanks for uploading $size byte file $name.");
};
app->start;
__DATA__
@@ form.html.ep
<!DOCTYPE html>
<html>
<head><title>File Upload</title></head>
<body>
<form name="FileUpload" action="http://localhost:3000/uploadtest.pl/upload" enctype="multipart/form-data" method="post">
Input Type:</td><td><input type="text" name="Input_Type" />
Please specify a file:</td><td><input type="file" name="Input_File" size="40"></td></tr>
<input type="submit" value="Submit"/>
</form>
<br><br><br><hr><br><br><br>
<form name="Status" action="http://localhost:3000/uploadtest.pl/status" method="post">
Token ID: <input type="text" name="Token" />
<input type="submit" value="Check Status"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
恐怕 Mojolicious get 命令不支持从文件生成请求。
perl -Mojo -E 'p("http://localhost:3000" => form => {Input_Type => "XML", Input_File => {file => "d:/xml/test.xml"}})'
Run Code Online (Sandbox Code Playgroud)
你必须使用ojo单线。
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |