利用GAE做文件下载代理
由于培训基地的网络做了限制,导致一些文件不能下载,造成了很大的困扰。今天突然有了一个利用Google服务器代理文件下载的想法。关键代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | String urlStr=req.getParameter("url"); String filename=urlStr.substring(urlStr.lastIndexOf("/")+1); resp.setContentType("application/x-download"); resp.addHeader("Content-Disposition","attachment;filename=" + java.net.URLEncoder.encode(filename,"UTF-8")); URL url=new URL(urlStr); HttpURLConnection http=(HttpURLConnection) url.openConnection(); http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)"); InputStream is=http.getInputStream(); byte[] data=new byte[500]; int n=is.read(data); OutputStream out=resp.getOutputStream(); while(n>0){ out.write(data,0,n); n=is.read(data); } is.close(); out.close(); |
主要是利用HttpURLConnection 获取要下载的文件,然后再将获得的字节流输出。注意:下载大一点的文件时会抛出“ResponseTooLargeException”,估计可能是GAE限制,知道如何解决这个问题的朋友,可以给我留言。