LINUX.ORG.RU

Perl, LWP, имя файла в utf8: HTTP::Message content must be bytes


0

0

Доброго времени суток.
С помощью LWP и Ко пытаюсь перлом загружать файлы на сервер, и всё работает ровно до того момента, когда имя файла начинает содержать не-ASCII текст в юникоде (кругом всё в принципе в utf8).

my $ua = LWP::UserAgent->new;
my $response = $ua->request(POST 'http://localhost/cgi-bin/upload.cgi', Content_Type => 'multipart/form-data', Content => [file => [«$file»]]);

При попытке загрузить файл вроде «поросёнокпётр.jpg», получаю:

*** unhandled exception in callback:
*** HTTP::Message content must be bytes at /usr/share/perl5/HTTP/Request/Common.pm line 90

Что я делаю не так и что упустил?
Думал делать заголовки и тело запроса вручную, но это настолько муторно, что явно неправильно.

★★★★★
Ответ на: комментарий от r_asian

Не подходит, пробовал уже. HTTP::Request::Common использует передаваемое ему имя файла для того, чтобы собственно его открыть и добавить содержимое в запрос. Если имя файла будет в urlencoded, то он не сможет его открыть в ФС.

Smacker ★★★★★
() автор топика
Ответ на: комментарий от r_asian

ААААААААА, блин. Как же я прошляпил - в запросе можно отдельно указать имя файла в ФС и имя файла, сообщаемое серверу. Вопрос снят, я посыпаю голову пеплом. Спасибо.

Smacker ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.