use warnings; use strict; use Socket; my $host = "www.meinwebserver.in"; my $path = "/index.php"; my $file = "C:\\\\test.jpg"; my $proto = getprotobyname('tcp'); my $iaddr = inet_aton($host); my $paddr = sockaddr_in( 80, $iaddr); #print $int_adr; #print $paddr; unless ( socket( SOCKET_HANDLER, PF_INET, SOCK_STREAM, $proto ) ) { die "ERROR : init socket: $!"; } unless ( connect( SOCKET_HANDLER, $paddr ) ) { die "no connect: $!\n"; } my $length = 0; open (FILE,"< $file") or warn "$!\n"; $length += -s FILE; my @head = ( "POST " . $host . $path . " HTTP/1.1", "Host: $host", "User-Agent: z-uploader", "Content-Length: $length", "Content-Type: multipart/form-data; boundary=zzzzzzzzzzzzzzzzzzz", "", "--zzzzzzzzzzzzzzzzzzz", "Content-Disposition: form-data; name=\"file\"; filename=\"$file\"", "Content-Type: application/octet-stream", "", "", ); try to get total length my $header = join( "\r\n", @head ); $length += length($header); $head[3] = "Content-Length: $length"; #2472 my $header = join( "\r\n", @head ); $length = -s FILE; $length += length($header); select SOCKET_HANDLER; $| = 1; binmode SOCKET_HANDLER; print SOCKET_HANDLER $header; while( sysread(FILE, my $buf, 8196 ) ) { if( length($buf) < 8196 ) { $buf = $buf."\r\n--zzzzzzzzzzzzzzzzzzz--"; syswrite(SOCKET_HANDLER, $buf, length($buf)); } else { syswrite(SOCKET_HANDLER, $buf, 8196); } print STDOUT '.', } close FILE; shutdown SOCKET_HANDLER, 1; my @data = (); print STDOUT "result->@data\n"; close SOCKET_HANDLER;