为什么用request.getInputStream()
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws
IOException,
ServletException {
int n,total=0;
Calendar date = Calendar.getInstance(); //创建一个日历类
String path = config.getServletContext().getRealPath( "/ ") + "uploadImages/ " + date.getTimeInMillis() + ".jpg "; //设置上传图片的路径
ServletInputStream in = request.getInputStream(); //获得文件输入流
BufferedInputStream fileIn = new BufferedInputStream(in);
File file = new File(path);
FileOutputStream out = new FileOutputStream(file);
byte[] b=new byte[10240];
PrintWriter writer = response.getWriter();
writer.println(request.getContentLength()+ " <p> ");
while((n=fileIn.read(b))> 0){
total = total + n; //文件大小
out.write(b, 0, n);
}
out.close();
fileIn.close();
in.close();
writer.println(path+ " <p> ");
writer.println(total);
writer.close();
}
上面servlet图片上传的代码,但是我的图片原来大小38000字节,传上去后就变成38450字节了,而writer.println(request.getContentLength()+ " <p> ");打印的也是38450字节,我把上传的文件名改长一点而大小还是38000字节,但是上传时打印出的是38700字节!!是不是在request.getInputStream()时,把表单里的文件路径和名称都读到输入流中了,然后写出来的时候,就有多的那些字节了?弄了一天都没搞清楚,高手指点下,在下感激不尽:)
------解决方案--------------------文件在上载过程中,会在文件头和文件尾加一些数据
------解决方案--------------------mark
------解决方案--------------------你上传图片的时候会在文件头和尾加一下数据,并且在你的页面中的其他输入项也会包含在内,所以肯定要大于你的图片的大小了。