2017-11-07 6 views
-2

現在、組み込みテンプレートを利用しているGoウェブサーバーで作業しています。.htmlテンプレートをgoで表示すると、メディアがロードされません。


現在の問題は、Webサーバーを実行すると、正しいファイルが提供されているが、サイトにメディアがロードされていないことです(写真やフォントなど).htmlファイルのようにすべてのメディアがロードされているので、バックエンドと関係があることがわかります。ここに私のコードは次のとおりです。

var templates = template.Must(template.ParseGlob("static/*.html")) 
... 
func index(w http.ResponseWriter, r *http.Request) { 
    currentTime := time.Now().Local() 
    toSend := payload{ 
     Date: currentTime.Format("01-02-2006"), 
     Status: "Active", 
    } 
    t, err := template.ParseFiles("static/index.html") 
    if err != nil { 
     log.Fatalf("Error parsing template: %v", err) 
    } 
    t.Execute(w, toSend) 
} 
... 

そしてここでは、私のファイルのパスは次のとおりです。

app 
|-main.go 
|-static(contains static files) 
    |-media(contains all media) 
    |-index.html 

これは、任意のメディアなしではまだ必要なすべてのデータと完全に罰金テンプレートを提供しています。すべての援助はありがとうございます!

+0

を必要なすべてのあなたは、静的なファイルを提供していましたか?私。 'index'以外に登録された別のハンドラが存在します。 'http.FileServer'? – Adrian

+0

いいえ、私はテンプレートを使用している場合、私はそれが必要でしょうか? – Ethan

+0

テンプレートとは関係ありません。サーバー(例えばGoプログラム)からHTMLをロードする場合、サーバーはHTMLで参照される他のアセット(例えば画像など)も公開する必要があります。ブラウザーのHTMLをディスクから直接ロードするだけで、ブラウザーは同じ方法でアセットをロードします。 – Adrian

答えて

0

@Adrianさんからのコメントでは、単にhtmlで使用するgoサーバー経由でメディア資産を読み込んでいませんでした。

http.Handle("/media/",http.StripPrefix("/media/",http.FileServer(http.Dir("static/media")))) 

は私が

関連する問題