FileInputStream fis2 = new FileInputStream(filepath); OutputStream bb= response.getOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while((len=fis2.read(buffer))>0){ bb.write(buffer,0,len); } fis2.read(buffer)将filepath的文件放入buffer作为内存缓冲区并获得可读的长度len, bb.write(buffer,0,len); 然后write(buffer,0,len)写到OutputStream中,每次都是从buffer内存处的0偏移开始写,每次写len字节。
记住最后一定要关闭 outputstream bb.close(); 否则上传速度慢,就像水龙头一直开着不关,等水槽的水满了 就出问题了
/** * 上传文件 * * @param uploadFileName * 被上传的文件名称 * @param savePath * 文件的保存路径 * @param uploadFile * 被上传的文件 * @return newFileName */ public static String upload(String uploadFileName, String savePath, File uploadFile) { String newFileName = getRandomName(uploadFileName, savePath); try { FileOutputStream fos = new FileOutputStream(savePath + newFileName); FileInputStream fis = new FileInputStream(uploadFile); byte[] buffer = new byte[1024]; int len = 0; System.out.println("111go!!!!"); while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } System.out.println("222go!!!!"); fos.close(); System.out.println("333go!!!!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return newFileName; }