js請求:java
// 下載圖片 function oDownLoad(url, filename) { var url = '${pageContext.request.contextPath}/file/downFile.do?url=' + url + '&filename=' + encodeURI(filename); window.location.href = url; }
java後端:後端
@RequestMapping(value = "/downFile.do", method = RequestMethod.GET) public void downPicture(HttpServletRequest request, HttpServletResponse response) throws Exception { InputStream in = null; String url = request.getParameter("url"); String filename = request.getParameter("filename"); //filename = java.net.URLDecoder.decode(filename, "UTF-8"); filename = new String(filename.getBytes("GB2312"),"iso-8859-1"); try { URL httpUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection)httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(100000);// 鏈接超時單位毫秒 // conn.setReadTimeout(200000);// 讀取超時 單位毫秒 conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.connect(); in = conn.getInputStream(); byte[] bs = new byte[1024]; int len = 0; response.reset(); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=" + filename); ServletOutputStream out = response.getOutputStream(); while ((len = in.read(bs))!= -1){ out.write(bs,0,len); } out.flush(); //關流 out.close(); }catch (Exception e){ throw new RuntimeException(url + "下載失敗"); }finally { try{ in.close(); }catch (Exception e){ } } }