Documentation for HTTP::Request::Common states:
If a $file is provided by no Content-Type header, then Content-Type and Content-Encoding will be filled in automatically with the values returned by LWP::MediaTypes::guess_media_type()
Maybe a module upgrade has changed the behaviour of LWP::MediaTypes::guess_media_type() to guess differently for .bin files. Try POSTing with the encoding set explicitly, like 'Content-Type' => 'application/octet-stream'.
To investigate further, use LWP in debug mode as follows and observe the headers:
use LWP::ConsoleLogger::Easy qw( debug_ua );
## Create browser object.
my $jar = HTTP::CookieJar::LWP->new;
my $ua = LWP::UserAgent->new(
cookie_jar => $jar,
protocols_allowed => ['http', 'https'],
timeout => 60,