int arrayLength = input.available();
byte[] bytes = new byte[arrayLength];
int pos = 0;  
while (true){
int n = input.read(bytes, pos, arrayLength-pos);
if(n <= 0)
break;
pos += n;
//System.out.println("pos=="+pos +"==="+n+"==="+input.available());
}

解决方案 »

  1.   

    buf为存储文件的byte[]
    l为文件长度
    打印byte[] 和l 看看 !!
      

  2.   

    分成多次写入
    byte  [] buffer = new buffer[1024];
    for(;;){
       int len = readNextBuffer(buffer);
       out.write(buf, 0,len);
    }
      

  3.   

    以上几位同仁的意思小弟明白,是把大文件分为小段字节码传送,小弟代码的意思基本差小多,l可以取出文件长度,byte[]也可分批读出,其实上传文件的代码都是大同小异,一般都是上传字节码,小弟通过多次调试确定错误出现在out.write(buf, 0,l);这行上。其实一个字节一个字节的上传也可以实现上传功能,只是速度太慢,小弟不知哪位同仁有速度快一点的上传方法可实现相同的功能。