原理:浏览器接收到后台传来的信息首先要解析的是:content-type,,然后处理数据。这里需要设置content-type为application/zip.浏览器接收到这个content-type就会认为它是一个二进制的压缩文件,就会在窗口提示下载,当然这个文件的content-type可以并不一定是zip压缩文件,可以是任何形式的文件,浏览器只解析服务器告诉它的content-type而不会去解析这个文件用来检查服务器是否欺骗它,它对服务器百分百信任,这也是由于http协议决定的,浏览器不可能接受完文件并解析出文件的content-type后再做出反应,它必须提前做出反应。
代码:
response.setHeader("Content-disposition", "attachment;filename=test.zip"); URL url = new URL("e://file/test.zip"); BufferedInputStream inputStream = new BufferedInputStream(url.openStream()); BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = (inputStream.read(buff,0,buff.length)))) { outputStream.write(buff,0,bytesRead); } if(inputStream != null){ inputStream.close(); } if(outputStream != null){ outputStream.close(); }