根据url下载音乐

来源:互联网 发布:匡恩网络 工控安全 编辑:程序博客网 时间:2024/03/29 13:12

 public void downVoice(HttpServletRequest request,HttpServletResponse response,String voiceUrl) throws Exception {
  int i = voiceUrl.lastIndexOf("/");
  String fileName =voiceUrl.substring(i + 1);
  
  HttpURLConnection httpconn = null;
  URL url = null;
  url = new URL(voiceUrl);
  httpconn = (HttpURLConnection) url.openConnection();
  httpconn.connect();
  InputStream in= httpconn.getInputStream();
 renderDownload(request, response, fileName, in);
   
 }

 

 public void renderDownload(HttpServletRequest request, HttpServletResponse response, final String fileName,
        InputStream in) throws IOException {

        String int BUFFER_SIZE = 4096
        String mimetype = "application/octet-stream";
        String encodeName = fileName;
        String ua = request.getHeader("User-Agent");
        /**
        if (-1 != ua.toLowerCase().indexOf(" msie ")) {
            // 客户端为IE
            try {
               // encodeName = java.net.URLEncoder.encode(fileName, "UTF-8");
                encodeName = new String(encodeName.getBytes("GBK"),"ISO-8859-1");
            } catch (UnsupportedEncodingException e) {
                log.error("UnsupportedEncoding", e);
            }
            mimetype = " application/x-msdownload ";
        } else {
            // 非IE
            encodeName = MimeUtility.encodeText(fileName, "UTF8", "B");
            mimetype = " application/x-download ";
        }
        **/
        try {
             encodeName = new String(encodeName.getBytes("GBK"),"ISO-8859-1");
         } catch (UnsupportedEncodingException e) {
             //log.error("UnsupportedEncoding", e);
         }
         mimetype = " application/octet-stream ";
        
        response.reset();
        response.setContentType(mimetype);
        response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"");
        OutputStream out = null;
        try {
            out = response.getOutputStream();
            byte[] buffer = new byte[BUFFER_SIZE];
            int i = -1;
            while ((i = in.read(buffer)) != -1) {
                out.write(buffer, 0, i);
            }
            response.flushBuffer();
        } finally {
            IOUtils.closeQuietly(out);
            IOUtils.closeQuietly(in);
        }
    }

jsp:

window.open(url);

0 0
原创粉丝点击