论坛首页 Web前端技术论坛

java 流传输压缩包

浏览 1354 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-07-14  
有的时候,页面上的下载文件是从后台使用流的形式下载来的,而不是直接使用src,这样有很多好处,资源的路径是隐藏的了,不会再页面处就可以查看到资源。
  原理:浏览器接收到后台传来的信息首先要解析的是:content-type,,然后处理数据。这里需要设置content-type为application/zip.浏览器接收到这个content-type就会认为它是一个二进制的压缩文件,就会在窗口提示下载,当然这个文件的content-type可以并不一定是zip压缩文件,可以是任何形式的文件,浏览器只解析服务器告诉它的content-type而不会去解析这个文件用来检查服务器是否欺骗它,它对服务器百分百信任,这也是由于http协议决定的,浏览器不可能接受完文件并解析出文件的content-type后再做出反应,它必须提前做出反应。
  代码:
    <pre name="code" class="java">
    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();
}
    </pre>
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics