1 回答

TA貢獻1111條經驗 獲得超0個贊
您需要 aHandler或 a在請求時HandlerFunc將文件內容 ( jquery.min.js) 發送到 Web 瀏覽器。
您有 3 個選擇:
手動操作
這是更復雜的解決方案。它看起來就像在您的處理程序函數中讀取文件的內容,設置正確的響應內容類型 ( application/javascript) 并將內容(即 a []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將從服務器獲取文件。
查看此答案,其中詳細介紹了如何使用/啟動靜態文件服務器。
- 1 回答
- 0 關注
- 296 瀏覽
添加回答
舉報