iteye_12142
iteye_12142
2010-07-01 11:14

网络传输文件丢字节的问题

  • it技术
  • 互联网问答
  • IT行业问题
  • 编程语言问答
  • 计算机技术

碰到一个奇怪的问题, 用客户端程序向服务端servlet传输图片文件的时候,总是丢失字节数, 收到的字节数组变小了。发送之前统计的是 229237字节 服务端收到的却是 229056字节

在服务端保存之后,保存之后的图片文件无法打开。 不知各位是否碰到这种问题。

客户端代码

[code="java"]String url ="http://127.0.0.1/api?photo_type=jpg";

    try {
     URL dataUrl = new URL(url);
     HttpURLConnection con = (HttpURLConnection) dataUrl.openConnection();
     con.setRequestMethod("POST");
     con.setRequestProperty("Proxy-Connection", "Keep-Alive");
     con.setDoOutput(true);
     con.setDoInput(true);
     OutputStream os=con.getOutputStream();
     FileInputStream in = new java.io.FileInputStream("c:\\test.jpg");  
     byte[] bt = new byte[1024];  
     while ((count = in.read(bt)) > 0) {  
         os.write(bt, 0, count);  
         os.flush();

     }  
     in.close();  
     os.flush();
     os.close(); 
     InputStream is=con.getInputStream();
     DataInputStream dis=new DataInputStream(is);
     byte d[]=new byte[dis.available()];
     dis.read(d);

     con.disconnect();
    } catch (Exception ex) {
     ex.printStackTrace();
    }[/code]

服务端代码:
[code="java"]try {

        long randomPre = System.currentTimeMillis();
        Random rand = new Random();
        fileTemp = fileTemp + String.valueOf(randomPre) + "_" + rand.nextInt() + "." + photo_type;
        outputStream = new FileOutputStream(new File(fileTemp));
        byte[] bytes = new byte[1024];
        int v;
        while ((v = request.getInputStream().read(bytes)) > 0) {
            outputStream.write(bytes, 0, v);

        }
        outputStream.flush();
        outputStream.close();


    } catch (Exception ex) {
        ex.printStackTrace(System.err);
    }[/code]
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

5条回答

为你推荐