我使用http.FileServer来提供一个mp3文件目录,我的模板然后是javascript中的src。但是,响应使用的是Content-Type text/html而不是audio/mpeg。如何设置FileServer响应的mime类型,我看到了这个问题在golang中的内容类型标头上设置“charset”属性,但我仍然不确定如何覆盖mime类型。
我的代码如下所示:
fs := http.FileServer(http.Dir(dir))
http.Handle("/media", http.StripPrefix("/media", fs))
http.HandleFunc("/", p.playlistHandler)
http.ListenAndServe(":5177", nil)我得到的错误是:
HTTP "Content-Type" of "text/html" is not supported. Load of media resource http://localhost:5177/media/sample1.mp3 failed.发布于 2016-09-15 21:02:30
这不是内容类型的问题。当您请求fs时,不会调用您的mp3处理程序。您需要将一个/添加到您的模式/media和条带前缀中,如下所示
http.Handle("/media/", http.StripPrefix("/media/", fs))原因是在net/http.ServeMux文档中
模式名称固定,根路径,如"/favicon.ico",或根子树,如“/图像/”(注意尾随斜杠)。较长的模式优先于较短的模式,因此,如果同时为“/映像/”和“/图像/缩略图/”注册了处理程序,则将调用后一个处理程序处理“/图像/缩略图/”开头的路径,而前者将接收"/images/“子树中任何其他路径的请求。
只要使用/media,您就可以为路径注册一个处理程序,但是使用尾随斜杠,它将它视为一个rooted subtree,并将在该树下为请求提供服务。
https://stackoverflow.com/questions/39520045
复制相似问题