关于下载音乐的问题

编程入门 行业动态 更新时间:2024-10-24 04:51:52

关于<a href=https://www.elefans.com/category/jswz/34/1413439.html style=下载音乐的问题"/>

关于下载音乐的问题

        这周写项目遇到了一个问题——怎么通过url下载音乐文件。

        因为之前写下载文件都是通过文件路径去下载的,而这一次我们用到了云存储,在数据库里面存的是url地址,所以我就不知道应该怎么去下载了。后来我在网上找到了通过url来下载文件的方法,但是又遇到了一个问题,就是我是从数据库获取的url,里面有中文会报错,这个问题困扰了我好长时间。

        我在网上查找解决中文乱码的办法的时候,知道了URLEncoder.encode()可以使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式 ,从而解决中文乱码。但是我在使用了URLEncoder.encode()之后,发现接口报错HTTP response code: 400 for URL,显示发送了异常请求,后来才发现并不能将url全部进行转化,否者会把HTTP:// 中的斜线也转义,导致请求出现协议异常等问题。

        后来由于我找不到更好的办法对url中的中文进行处理,就将url分割成了几部分,然后对含有中文的那一部分进行转化。虽然方法有点笨,但是总算是解决了问题。

public ModelAndView download(Integer musicId,  HttpServletResponse response) throws Exception {Map map=new HashMap();Music music =musicService.queryById(musicId);String musicName=music.getMusicName();String musicPath=music.getMusicPath();ServletOutputStream out = null;InputStream inputStream = null;String[] str=musicPath.split("/",4);String[] s=str[3].split("\\.");try {//路径String path = musicPath;System.out.println(path);// 取得文件的后缀名。String ext = path.substring(path.lastIndexOf(".") + 1).toLowerCase();//文件名String pdfName = musicName+"."+ext;// 获取外部文件流URL url = new URL(str[0]+"//"+str[2]+"/"+URLEncoder.encode(s[0], "UTF-8")+"."+s[1]);map.put("2",url);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(3 * 1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");inputStream = conn.getInputStream();/*** 输出文件到浏览器*/int len = 0;// 输出 下载的响应头,如果下载的文件是中文名,文件名需要经过url编码response.setContentType("application/x-download");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(pdfName, "UTF-8"));response.setHeader("Cache-Control", "no-cache");out = response.getOutputStream();byte[] buffer = new byte[1024];while ((len = inputStream.read(buffer)) > 0) {out.write(buffer, 0, len);}out.flush();} catch (Exception e) {e.printStackTrace();} finally {if (inputStream != null) {try {inputStream.close();} catch (Exception e) {}}if (out != null) {try {out.close();} catch (Exception e) {}}}return new ModelAndView();}

更多推荐

关于下载音乐的问题

本文发布于:2023-06-29 03:47:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/938583.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:下载音乐

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!