fr.available() is not what you think it is.... You want File.length(), and a loop for reading the file bytes to send to the server...
is.available() is also wrong .. .consider a client side that looks like:
byte[] buffer = new byte[4096];
int len = 0;
while ((len = fr.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}