日期:2014-05-17  浏览次数:20677 次

jsp上传文件如何保持文件大小不变
最近在做图片上传,其实原理很简单,就是I/O流把图片从本地上传到服务器。
实现之后,我无意中发现一个问题,有些图片上传后可以打开显示,有的图片却失效了,而直接复制到服务器就没事。
我百思不得其解,又是偶然发现,上传前本地图片大小为20K,上传到服务器后图片就变成32K了!而复制图片大小是不变的。
所以我猜测是否因为上传改变了图片文件的大小,在上传过程中有其他什么处理过程我不知道的。

请问各位,以上所说的上传图片失效问题是否因为上传后大小改变而导致的呢?如果是,该如何解决?如何保证上传文件大小不变呢?
我上传用的代码:
try {

InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(src),
BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dst),
BUFFER_SIZE);
byte[] buffer = new byte[BUFFER_SIZE];
while (in.read(buffer) > 0) {
out.write(buffer);
}
} finally {
if (null != in) {
in.close();
}
if (null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}

------解决方案--------------------
while (in.read(buffer) > 0) {
out.write(buffer);
}
你应该读多少,写多少,不要每次全部写入这个buffer字节数组