`

java 流传输压缩包

阅读更多
有的时候,页面上的下载文件是从后台使用流的形式下载来的,而不是直接使用src,这样有很多好处,资源的路径是隐藏的了,不会再页面处就可以查看到资源。
  原理:浏览器接收到后台传来的信息首先要解析的是: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();
		}
    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics