84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
在开发的过程中碰到一个问题,如下
现在需要做一个mp3文件下载的功能,但是在chrome浏览器下面总是直接播放,不知道怎么解决,求解答?
mp3
附加:有没有相关性的知识,能让我们对文件下载,对web服务输出格式,有个整体的认识?谢谢!
注:本人是学Java的,其它代码可能不怎么看的懂,不过您可以跟我说原理。 不管怎么样,感恩 ^_^
Java
小伙看你根骨奇佳,潜力无限,来学PHP伐。
http://tools.ietf.org/html/rfc2616#section-19.5.1
The Content-Disposition response-header field has been proposed as a means for the origin server to suggest a default filename if the user requests that the content is saved to a file.
An example is:
Content-Disposition: attachment; filename="fname.ext"
这里自己的原文链接:http://zcoder.cn/2015/01/01/下载mp3文件而不是直接播放/
Web工程师适合看本文,由于本人是做Java的,以下的代码都是基于Java的,但是我会讲基本原理
在浏览器中,打开一个输出是MP3文件流的url,要求是直接下载,但是有个浏览器有自带的播放功能,会出现浏览器直接打开文件。
url
rfc2616#section-19.5.1: http://tools.ietf.org/html/rfc2616#section-19.5.1 WIKI: http://en.wikipedia.org/wiki/MIME#Content-Disposition
什么是Content-Disposition?,Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件,Content-disposition可以在用户下载时指定文件名字。实际使用中Content-disposition虽然只是能指定名字,但是浏览器默认直接下载,而不需要再指定Content-Type;但是如果不指定Content-disposition,直接设置响应头Content-Type: application/octet-stream也可以下载,但是这种下载没有指定文件名,用户下载下来的文件名是请求路径(Request URL)。
Content-disposition
Content-Type
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="filename.ext"
// 使客户端直接下载 // 响应的格式是: // Content-Type: application/octet-stream response.setContentType("application/octet-stream"); // 为客户端下载指定默认的下载文件名称 // 响应的格式是: // Content-Disposition: attachment;filename="[文件名]" response.setHeader("Content-Disposition", "attachment;filename=\"" + f.getName() + "\"");
这个时候问题就简单了,我们只要加一个过滤器,对需要请求地址,设置响应头Content-Type: application/octet-stream,即可。
我在解决这个问题的过程中,发现 stackoverflow.com 上面答案很多,但是我使用百度却只搜到两条信息,而且写的都不好,这说明两个问题:1、百度有的时候不好用,2、国内没有这样的环境,即使大家解决问题了,没有注意积累,没有分享出来。
下面是 stackoverflow.com 上面的解答,很不错,分享一下。
http://stackoverflow.com/questions/3401650/stop-mp3-file-from-streaming-in-browsers/3401658#3401658
http://tools.ietf.org/html/rfc2616#section-19.5.1
下载mp3文件而不是直接播放
这里自己的原文链接:http://zcoder.cn/2015/01/01/下载mp3文件而不是直接播放/
该本文适合人群
Web工程师适合看本文,由于本人是做
Java
的,以下的代码都是基于Java
的,但是我会讲基本原理需求
在浏览器中,打开一个输出是MP3文件流的
url
,要求是直接下载,但是有个浏览器有自带的播放功能,会出现浏览器直接打开文件。解决办法
Content-Disposition
rfc2616#section-19.5.1: http://tools.ietf.org/html/rfc2616#section-19.5.1
WIKI: http://en.wikipedia.org/wiki/MIME#Content-Disposition
什么是Content-Disposition?,
Content-disposition
是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件,Content-disposition
可以在用户下载时指定文件名字。实际使用中Content-disposition
虽然只是能指定名字,但是浏览器默认直接下载,而不需要再指定Content-Type
;但是如果不指定Content-disposition
,直接设置响应头Content-Type: application/octet-stream
也可以下载,但是这种下载没有指定文件名,用户下载下来的文件名是请求路径(Request URL)。设置response-header(响应头)
Java代码示例
如果请求路径是静态文件
这个时候问题就简单了,我们只要加一个过滤器,对需要请求地址,设置响应头
Content-Type: application/octet-stream
,即可。其他
我在解决这个问题的过程中,发现 stackoverflow.com 上面答案很多,但是我使用百度却只搜到两条信息,而且写的都不好,这说明两个问题:1、百度有的时候不好用,2、国内没有这样的环境,即使大家解决问题了,没有注意积累,没有分享出来。
下面是 stackoverflow.com 上面的解答,很不错,分享一下。
http://stackoverflow.com/questions/3401650/stop-mp3-file-from-streaming-in-browsers/3401658#3401658