sub upload { my ($url, $binary) = @_; local $HTTP::Request::Common::DYNAMIC_FILE_UPLOAD = 1; my $ua = LWP::UserAgent->new( timeout => 10*60 ); my $request = POST ${url}, 'Content_Type' => 'form-data', 'Content' => { 'file_to_upload' => ["$binary"] }; my $reader = &create_content_reader($request->content(), $request->header('Content_Length')); $request->content($reader); my $response = $ua->request($request); print STDOUT $response->status_line, "\n"; if ($response->is_success) { return JSON::decode_json($response->decoded_content); } return undef; } #### sub create_content_reader { my ($gen, $len) = @_; my $size = 0; my $next_update = 0; return sub { my $chunk = &$gen(); $size += length($chunk) if $chunk; return $chunk; } }