ディレクトリ構造 dev/templetes/index.html /test.jpg /main.go
go
1//main.go 2package main 3 4import ( 5 "flag" 6 "fmt" 7 "html/template" 8 "log" 9 "net/http" 10 "path/filepath" 11 "sync" 12 "time" 13) 14 15type templateHandler struct { 16 once sync.Once //一回だけコンパイル? 17 filename string 18 templ *template.Template 19} 20 21func (t *templateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 22 t.once.Do(func() { 23 t.templ = 24 template.Must(template.ParseFiles(filepath.Join("templates", t.filename))) //htmlのあるフォルダ指定 25 }) 26 t.templ.Execute(w, nil) 27 28 // logの代わり 29 fmt.Print(time.Now()) 30 fmt.Printf(" path: " + r.URL.Path + "\n") 31} 32 33func main() { 34 var addr = flag.String("addr", ":8080", "アプリケーションのアドレス") 35 http.Handle("/", &templateHandler{filename: "index.html"}) 36 log.Println("Webサーバを開始します。ポート:", *addr) 37 if err := http.ListenAndServe(*addr, nil); err != nil { //ListenAndServeメソッドでポート8080を使いWebサーバを開始する 38 log.Fatal("ListenAndServe:", err) 39 } 40}
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <title>テスト</title> 5 </head> 6 <body> 7 <img src="test.jpg" width="100" height="100" alt="テスト"> 8 </body> 9</html>
このソースコードでlocalhost:8080
にアクセスしたら、画像が出力されません。
imageパッケージ等色々調べましたがいまいち理解ができません
ソースコードのミス、使わないといけないパッケージ等教えてもらえると幸いです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 08:50 編集
2020/04/26 08:56