Perl отправляет запрос на отправку zip-файла как base64? - PullRequest
3 голосов
/ 04 мая 2011

У меня есть скрипт на Perl, пытающийся отправить zip-файл, как это происходит с модулем LWP UserAgent

my $req = POST $url, Content_Type => 'form-data',
    Content      => [
        submit => 1,
        upfile =>  [ $fname ]
    ];

где $ fname - путь к файлу. На стороне сервера, хотя кажется, что мой POST-массив имеет только «submit». Должен ли я base64 кодировать файл и назначить его переменной? Какой лучший способ сделать это?

1 Ответ

2 голосов
/ 04 мая 2011

Убедитесь, что имя файла может быть разрешено.Вы должны получить ошибку, если этого не может быть.По крайней мере, в моей версии HTTP::Request::Common.

Вам не нужно кодировать двоичный контент как Base64.(Если, конечно, серверное приложение не ожидает этот формат.)

Вот полный пример сценария:

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common 'POST';

my $ua = LWP::UserAgent->new;
my $url = 'http://localhost:8888'; # Fiddler
my $req = POST $url,
    Content_Type => 'form-data',
    Content => [
        submit  => 1,
        upfile  => [ 'C:\temp\bla.zip' ],
    ];
my $line = '=' x 78 . "\n";
print $line, $req->as_string;
my $rsp = $ua->request( $req );
print $line, $rsp->as_string;
...