public static void download(
HttpServletRequest request,
HttpServletResponse response, String storeName, String contentType,
String realName) { response.setContentType("text/html;charset=UTF-8"); try { request.setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } BufferedInputStream bis = null; BufferedOutputStream bos = null; String ctxPath =""; if(!storeName.contains(Constants.FileSysPath)) ctxPath = Constants.FileSysPath+""+ FileOperateUtil.UPLOADDIR; String downLoadPath = ctxPath + storeName; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } long fileLength = new File(downLoadPath).length(); response.setContentType(contentType); String userAgent = request.getHeader("User-Agent"); if (userAgent != null) { userAgent = userAgent.toUpperCase(); if(userAgent.indexOf("MSIE") != -1){ try { response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(realName, "UTF8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } else { try { response.setHeader("Content-disposition", "attachment; filename=" + new String(realName.getBytes("utf-8"), "ISO8859-1")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } response.setHeader("Content-Length", String.valueOf(fileLength)); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } try { FileInputStream fis= new FileInputStream(downLoadPath); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } bis = new BufferedInputStream(fis); } catch (FileNotFoundException e) { e.printStackTrace(); } try { bos = new BufferedOutputStream(response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } byte[] buff = new byte[2048]; int bytesRead; try { while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); } try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } try { bis.close(); } catch (IOException e) { e.printStackTrace(); } try { bos.close(); } catch (IOException e) { e.printStackTrace(); } }
文件下载
最新推荐文章于 2024-07-13 03:15:58 发布