碰到一个奇怪的问题, 用客户端程序向服务端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]