1 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
您需要 aHandler或 a在請求時(shí)HandlerFunc將文件內(nèi)容 ( jquery.min.js) 發(fā)送到 Web 瀏覽器。
您有 3 個(gè)選擇:
手動(dòng)操作
這是更復(fù)雜的解決方案。它看起來就像在您的處理程序函數(shù)中讀取文件的內(nèi)容,設(shè)置正確的響應(yīng)內(nèi)容類型 ( application/javascript) 并將內(nèi)容(即 a []byte)發(fā)送到響應(yīng)。
注意事項(xiàng):讀取文件時(shí),必須指定絕對路徑。如果您指定相對路徑,請確保該文件位于您啟動(dòng)應(yīng)用程序的當(dāng)前文件夾(工作目錄)中。
例子:
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 個(gè)文件:jquery.min.js對于請求:
http://localhost:8081/jquery.min.js
利用 http.ServeFile()
這更容易:該函數(shù)http.ServeFile()能夠?qū)⒁粋€(gè)文件的內(nèi)容發(fā)送到指定的響應(yīng)。您仍然需要?jiǎng)?chuàng)建一個(gè)函數(shù)或處理程序來使用它,但它會(huì)為您完成剩下的工作:
func SendJqueryJs(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "jquery.min.js")
}
利用 http.FileServer()
如果您需要提供多個(gè)靜態(tài)文件,這就是FileServer()函數(shù)派上用場的地方,它返回一個(gè)Handler自動(dòng)為您本地文件系統(tǒng)提供的文件,這些文件是您指定的根文件夾的后代。
這種解決方案更加靈活:它可以發(fā)送多種類型的多個(gè)文件,自動(dòng)檢測和設(shè)置內(nèi)容類型。處理程序還能夠呈現(xiàn) HTML 頁面,以列出帶有文件鏈接和父/子文件夾鏈接的目錄內(nèi)容。
例子:
http.Handle("/tmpfiles/",
http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
這將Handler在 URL 上注冊一個(gè),該 URL/tmpfiles/提供在/tmp文件夾中本地文件系統(tǒng)中找到的文件。因此,例如以下<script>鏈接:
<script type="text/javascript" src="/tmpfiles/jquery.min.js">
/tmp/jsquery.min.js將從服務(wù)器獲取文件。
查看此答案,其中詳細(xì)介紹了如何使用/啟動(dòng)靜態(tài)文件服務(wù)器。
- 1 回答
- 0 關(guān)注
- 286 瀏覽
添加回答
舉報(bào)