當他點擊「下載音樂」鏈接時,我想向用戶顯示如下所示的彈出窗口?如何在網頁上添加下載音樂鏈接?
如果我使用點擊一個鏈接後,然後下面的代碼打開了瀏覽器內嵌音樂播放,如蘋果的實時..
<a href="../mp3/horse.mp3" target="_blank">Click to download</a>
如何防止瀏覽器運行音樂(沒有禁用/刪除這個插件)。
我想我的瀏覽器應該下載音樂,不應該玩它!
當他點擊「下載音樂」鏈接時,我想向用戶顯示如下所示的彈出窗口?如何在網頁上添加下載音樂鏈接?
如果我使用點擊一個鏈接後,然後下面的代碼打開了瀏覽器內嵌音樂播放,如蘋果的實時..
<a href="../mp3/horse.mp3" target="_blank">Click to download</a>
如何防止瀏覽器運行音樂(沒有禁用/刪除這個插件)。
我想我的瀏覽器應該下載音樂,不應該玩它!
首先,從錨點中刪除onclick
屬性。你不需要爲此涉及JavaScript。
其次,請求MP3時,讓您的服務器返回一個content-disposition: attachment
HTTP響應標頭。你如何做到這一點取決於你的服務器。例如,在Apache中,如果不涉及服務器端編程語言,則可以使用a Header
directive。或者,請參閱an example in Java(儘管您應該爲mp3設置正確的content-type
)。
您可以在服務器的.htaccess文件中添加以下幾行代碼,以強制從服務器下載特定文件類型。然後一個正常的鏈接應該工作。
<FilesMatch "\.(?i:mp3)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
Explaining here how I did it:
1. Add following snippet in web.xml:
<pre><code>
<servlet>
<servlet-name>MyDownloadServlet</servlet-name>
<servlet-class>com.lokur.MyDownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyDownloadServlet</servlet-name>
<url-pattern>*.download</url-pattern>
</servlet-mapping>
</pre></code>
2. Add following in your servlet:
public class MyDownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
//Set the headers.
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment; filename=downloaded_horse.mp3");
//TODO: pull the file path from the request parameters
InputStream fileIn = getServletContext().getResourceAsStream("mp3/horse.mp3");
ServletOutputStream outstream = response.getOutputStream();
byte[] outputByte = new byte[40096];
while(fileIn.read(outputByte, 0, 40096) != -1)
{
outstream.write(outputByte, 0, 40096);
}
fileIn.close();
outstream.flush();
outstream.close();
}
}
3. Finally this is the requested jsp:
<pre> <code>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<body>
<form action="getMusicFile.download" method="post">
Wanna download? <input type="submit" value="Download music">
</form>
</body>
That's all to it!
Cheers,
Akshay :)
上nginx的,您可以在nginx.conf添加此
location ~* (.*\.mp3) {
types { application/octet-stream .mp3; }
default_type application/octet-stream;
}
,並在Apache中添加這對你的httpd.conf或的.htaccess
<FilesMatch "\.(?i:mp3)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
我在http://mp3boo.cc配置上使用此功能,並很好地強制下載mp3文件。 hth
感謝哥們!有效! :) –