您需要a
Handler或a
来在请求时
HandlerFunc将文件内容(
jquery.min.js)发送到Web浏览器。
您有3种选择:
手动执行
这是更复杂的解决方案。就像在处理程序函数中,您读取文件的内容,设置适当的响应内容类型(
application/javascript)并将内容(即
[]byte)发送到响应。
需要注意的事项:读取文件时,必须指定绝对路径。如果指定相对路径,请确保该文件位于您从中启动应用程序的当前文件夹(工作目录)中。
例:
func SendJqueryJs(w http.ResponseWriter, r *http.Request) { data, err := ioutil.ReadFile("jquery.min.js") if err != nil { http.Error(w, "Couldn't read file", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/javascript; charset=utf-8") w.Write(data)}func main() { http.HandleFunc("/jquery.min.js", SendJqueryJs) panic(http.ListenAndServe(":8081", nil))}上面的示例只能提供1个文件:
jquery.min.js对于请求:
http://localhost:8081/jquery.min.js
利用 http.ServeFile()
这要容易得多:该功能
http.ServeFile()能够将一个文件的内容发送到指定的响应。您仍然需要创建一个函数或处理程序来使用它,但是其余的工作将为您完成:
func SendJqueryJs(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "jquery.min.js")}利用 http.FileServer()
如果您需要提供多个静态文件,可以在此
FileServer()方便使用函数,该函数将为您返回一个
Handler自动提供本地文件系统文件的文件,这些文件是您指定的根文件夹的后代。
该解决方案更加灵活:它可以发送多种类型的许多文件,自动检测并设置内容类型。该处理程序还能够呈现HTML页面,以列出目录内容以及指向文件和父/子文件夹的链接。
例:
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))这将
Handler在URL处注册一个,该URL
/tmpfiles/服务于在
/tmp文件夹中的本地文件系统中找到的文件。因此,例如以下
<script>链接:
<script type="text/javascript" src="/tmpfiles/jquery.min.js">
/tmp/jsquery.min.js将从服务器获取文件。



